Bei der lokalen Entwicklung unter Windows mit Xampp muss man natürlich auch Mails verschicken können und Tests durchführen.
Ohne eine Konfiguration von sendmail bekommt man unter Windows folgende Fehlermeldung:
mail() [<a href='http://www.php.net/function.mail'>function.mail</a>]: "sendmail_from" not set in php.ini or custom "From:"
Mit den folgeden Einstellungen ist es möglich SMTP Mails lokal zu versenden z.B. mit PHPMailer oder mit WordPress wp_mail().
Folgende Schritte sind nötig dafür um über Sendmail Mails zu verschicken, welches in Xampp mitgeliefert wird:
1. In der xampp/sendmail/sendmail.ini muss ein gültiges E-Mail Konto angegeben werden, über welches E-Mails versendet werden sollen:
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=my-gmail-id@gmail.com
auth_password=my-gmail-password
2. xampp/php/php.ini Einstellungen (entkommentieren):
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 587
; 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 = "\"\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 = "\xampp\apache\logs\php_mail.log"
Damit wird aktiviert, dass ein Fehler Log geschrieben wird.
Danach muss der Apache neu gestartet werden und nun können mit dem PHP mail()-Befehl E-Mails verschickt werden von Xampp unter Windows..
Mögliche Fehler aus dem Sendmail Error Log: sendmail.log
errormsg='cannot connect to localhost, port foo: Permission denied'
Kann über den Port keine Mail versendet werden, es kann durch einen Alternativen Port gesendet werden, wie z.B. bei einem Hotmail Account
[sendmail]
smtp_server=smtp.live.com
smtp_port=25
smtp_ssl=tls
tls_certcheck off
error_logfile=error.log
debug_logfile=debug.log
auth_username=foo@hotmail.com
auth_password=my-hotmail-password