PHP: utilizzare la funzione mail() in locale con xampp e Windows 7
In un precedente articolo ho spiegato come configurare sendmail correttamente in Windows per poter utilizzare la funzione PHP mail() in locale.
Ora su Windows7 la configurazione non funziona più e per questo motivo ho dovuto cercare un'alternativa per risolvere velocemente il problema.
L'alternativa si chiama fake sendmail for windows . Ecco come configurare correttamente il programma:
1) scaricare il file zip dal sito http://glob.com.au/sendmail/ ed estrarre il contenuto
2) copiare i files nella cartella sendmail del proprio server locale (es. C:\xampp\sendmail\ )
3) aprire il file php.ini (solitamente in C:\xampp\php\php.ini ), cercare la stringa [mail function] e sostituire il blocco con questo (eventualmente correggendo il percorso del parametro sendmail_path che dovrà puntare al nuovo file sendmail.exe):
; 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 = "\"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"
4) a questo punto è sufficiente impostare i parametri del server smtp da utilizzare per l'invio nel file sendmail.ini . Questi sono i parametri da utilizzare per gmail:
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
default_domain=gmail.com
error_logfile=error.log
;username e password
auth_username=USERNAME@gmail.com
auth_password=PASSWORD
force_sender=USERNAME@gmail.com
[UPDATE 19/04/2016] Recentemente Google ha disabilitato l'accesso per le "App meno sicure" e quindi si potrebbe ricevere un errore.
Per abilitare l'invio da locale è sufficiente aprire l'indirizzo https://www.google.com/settings/security/lesssecureapps e ATTIVARE l'accesso per le app meno sicure (questo ovviamente potrebbe cambiare in futuro, ma per ora - 2016 - funziona).

Commenti