24 Marzo 2010 12:27:18 · [SendMail for Windows... Oh Yeah!]
Qualche giorno fa Libero ha cambiato il server di posta in uscita (SMTP) per arginare lo spam. Per chi come me usa il Php in locale su Windows si sarà trovato in difficoltà perché non ha potuto testare in locale le proprie funzioni mail() di Php. Infatti Libero ha cambiato il server SMTP da mail.libero.it a smtp.libero.it con la conseguenza che chiunque voglia spedire mail tramite mailer o tramite
Php deve autenticarsi con username e password. Per prima cosa ho provato a mettere nel php.ini al posto di mail.libero.it smtp.libero.it ma il Php andava in errore perché era necessaria l'autenticazione. Allora ho provato una delle tante Classi Php per inviare posta tramite autenticazione ma ancora una volta andava in errore il Php. A questo punto ho pensato alla controparte Linux per inviare mail ed
ho appreso con grande meraviglia che sendmail gestisce server SMTP con autenticazione così ho cercato una versione Windows e l'ho trovata! Vi dico subito che è gratuita e funziona meravigliosamente bene. Il porting si chiama
Fake SendMail For Windows. Scaricate l'archivio
sendmail.zip e decomprimetelo. Copiate l'intera cartella contenente sendmail.exe e sendmail.ini dove volete. Io avendo
installato Apache2, MySql5, Perl e Php in C:\Lamp\ ho messo la cartella sendmail lì (C:\Lamp\sendmail\). A questo punto apriamo il file sendmail.ini e configuriamolo (io ho messo i valori di Libero perché ho questo provider voi metterete i vostri):
; configuration for fake sendmail
; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail
[sendmail]
; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.
smtp_server=smtp.libero.it
; smtp port (normally 25)
smtp_port=25
; SMTPS (SSL) support
; auto = use SSL for port 465, otherwise try to use TLS
; ssl = alway use SSL
; tls = always use TLS
; none = never try to use SSL
smtp_ssl=auto
; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify
default_domain=
libero.it
; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging
error_logfile=C:\Lamp\sendmail\error.log
; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging
debug_logfile=C:\Lamp\sendmail\debug.log
; if your smtp server requires authentication, modify the following two lines
auth_username=tualogin@libero.it
auth_password=tuapassword
; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines. do not enable unless it is required.
;pop3_server=popmail.libero.it
;pop3_username=tualogin@libero.it
;pop3_password=tuapassword
; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify
; the "From: " header of the message content
force_sender=tuamaildilogin@libero.it
; force the sender to always be the following
email address
; this will only affect the "RCTP TO" command, it won't modify
; the "To: " header of the message content
;force_recipient=
; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting. you can manually set the ehlo/helo name if required
;hostname=localhost
A questo punto possiamo dire di avere quasi finito... dobbiamo solo modificare il file php.ini in questo modo:
[mail function]
; For Win32 only.
;SMTP = smtp.libero.it
;smtp_port = 25
; For Win32 only.
;sendmail_from = tuamaildilogin@libero.it
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "C:\Lamp\sendmail\sendmail.exe -t"
A questo punto potete riavviare Apache e sarete già operativi
Buona programmazione a tutti