Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XAMPP Sendmail using Gmail account

I'm trying to configure Sendmail through XAMPP to send email. In my sendmail.ini I have these settings:

# Set default values for all following accounts.

logfile "C:\xampp\sendmail\sendmail.log
account Gmail
tls on
port 587
tls_certcheck off
host smtp.gmail.com
from [email protected]
auth on
user [email protected]
password mypassword

account default : Gmail

I've created a test script like this:

$to = "[email protected]";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
$headers = "From: [email protected]" . "\r\n";
if (mail($to, $subject, $body, $headers)) {
    echo ("Message successfully sent!");
} else {
    echo ("Message delivery failed...");
}

I get a message to say that the email was sent but it never arrives and in the logs I get:

sendmail: Error during delivery: Must issue a STARTTLS command first.

Does anybody know what the issue could be here?

Thanks in advance!

Gaz

like image 304
Gaz Avatar asked Feb 09 '11 18:02

Gaz


2 Answers

This is what worked for me Hopefully no one else will burn oil to figure this out like i did.

Here is my sendmail.ini

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
[email protected]
auth_password=yourgmailpassword
[email protected]

php/php.ini ----basically comment everything out except sendmail_path & mail.add_x_header

[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP = localhost
; http://php.net/smtp-port
;smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log = "C:\xampp\apache\logs\php_mail.log"

This worked for me after i updated the sendmail files (the old ones dont support smtp)

  • go to http://glob.com.au/sendmail/ and grab the latest sendmail zip file
  • unzip to desktop and copy the files into your \xampp\sendmail folder replacing everything that was there.EVERYTHING!
  • Now open up sendmail.ini and copy paste what i showed above.(remove everything in that file first or just comment everything out!)
  • NOTE: you dont need Mercury servers started for this.

I was making a password recovery php on localhost when i encountered this problem. I needed to send users their password. - your php looks okey

like image 61
braviato Avatar answered Sep 21 '22 21:09

braviato


Okay, today, the best answer did not work for me. But, this did:

in sendmail.ini:

[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=****@gmail.com
auth_password=*******
force_sender=****@gmail.com

in php.ini:

[mail function]
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

Based on port @: http://support.google.com/mail/bin/answer.py?hl=en&answer=13287

like image 44
aubreypwd Avatar answered Sep 22 '22 21:09

aubreypwd