PHP: utilizzare la funzione mail() in locale con xampp e Windows 7

ATTENZIONE! Il post ha più di 2 anni e le informazioni contenute potrebbero essere obsolete (ad esempio a causa di un aggiornamento di versione rispetto agli elementi descritti o links modificati da siti esterni).

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).

Abilitazione app meno sicure in Gmail


Commenti