Posta PHP () su Windows: nessun errore, l'e-mail non viene inviata
-
05-07-2019 - |
Domanda
Attualmente sto cercando di eseguire il debug di un sito Web basato su Elgg (non l'ho sviluppato) e vorrei inviare le e-mail direttamente dalla macchina di sviluppo locale (WinXP). Sto eseguendo WAMP con Apache 2.2.11 e PHP 5.3.0
Dopo alcune ricerche, la soluzione più semplice che ho incontrato sta usando fake sendmail per inoltralo al mio account GMail / app Google tramite SMTP e lascia che esegua l'invio. Il problema è che non ricevo alcun errore, ma l'e-mail non viene inviata.
Ecco cosa ho fatto:
- Copia sendmail.exe e sendmail.ini in una sottocartella in WAMP
- Configurato tramite sendmail.ini (le impostazioni di configurazione sono ok)
- Modificato php.ini per aggiungere il percorso a sendmail.exe
sendmail_path = " C: \ Programmi \ wamp \ bin \ sendmail \ sendmail.exe -t "
- Commentato le impostazioni SMTP di Windows in php.ini
; SMTP = localhost
; smtp_port = 25
; sendmail_from = xxx@domain.com
; mail.force_extra_parameters =
Il file mail.log mostra quanto segue:
mail() on [C:\Program Files\wamp\www\mail.php:9]: To: xxx --
Headers: From: xxx Reply-To: xxx X-Mailer: PHP/5.3.0
La mia ipotesi è che il problema è che l'opzione predefinita di Windows (per specificare il server e non l'utilità sendmail) non viene sostituita. In phpinfo ()
ottengo ancora SMTP - > localhost
e smtp_port - > 25
, anche se le ho commentate.
Se qualcuno riuscisse a farlo funzionare, apprezzerei davvero un po 'di aiuto. A mio avviso, l'utilizzo di sendmail falso è molto più semplice rispetto all'installazione di un server di posta sul tuo computer.
Grazie!
P.S. Per favore, non suggerire PHPMailer e simili, perché devo usare la funzione mail (). Ecco come funziona Elgg.
Soluzione
Alla fine l'ho fatto funzionare. Il problema era che PHP aveva un bug nell'analisi dei file .ini con spazi nel percorso (per sendmail). È stato corretto nella versione 5.3.0, ma il manuale non conteneva informazioni al riguardo.
Quindi, sì, è possibile usare sendmail con PHP su Windows: D.
Grazie a tutti per il vostro tempo!
Altri suggerimenti
Assicurati di avere il servizio SMTP in esecuzione sul tuo computer locale e che la porta SMTP (25) sia aperta.
Controlla i servizi (Run- > services.msc) e cerca Send Mail Transfer
Se non riesci a trovare SMTP nell'elenco dei servizi, devi installarlo: Aggiungere, Esegui > appwiz.cpl- > Aggiungi Rimuovi componenti di Windows- > IIS- > Dettagli- > SMTP
Non sono sicuro che ciò aiuti o meno, ciò che ero solito fare in questi scenari era configurare, visualizzare la mia macchina e impostarlo per ricevere e-mail dal pop ogni 5 minuti circa, in questo modo il mio ip / la macchina è stata autenticata contro il pop e se ho appena impostato il:
SMTP = localhost
smtp_port = 25
in php.ini, la funzione mail ha funzionato bene. Quindi nel tuo caso basta impostare le proprie prospettive in modo che funzionino con un pop e usare quel smtp in php.ini e, si spera, dovrebbe funzionare. Non ho testato che questo sarà GMail però.
P.S. Per favore, non suggerire PHPMailer e simili, perché devo usare la funzione mail (). Ecco come funziona Elgg.
... a meno che tu non stia utilizzando un plug-in che modifica questo comportamento:
http://community.elgg.org/pg/plugins/costelloc/ lettura / 16498 / phpmailer