Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #22099
| From | Umberto Salsi <salsi@icosaedro.it> |
|---|---|
| Newsgroups | it.comp.www.php |
| Subject | Re: mail() fallisce solo se tutti i destinatari vengono respinti? |
| Date | 2018-06-18 12:05 +0200 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <pg8051$1t1u$1@gioia.aioe.org> (permalink) |
| References | <pfoa20$66j$1@gioia.aioe.org> |
Umberto Salsi <salsi@icosaedro.it> wrote: > Sto esplorando l'affidabilità di mail() per l'invio "massivo" a due o > più destinatari. Sebbene il manuale non lo dica, sembra che: > > 1. Non si può avere retroazione del motivo del fallimento. Aggiornamenti sulla mia indagine: Sembra che qualcuno sia riuscito ad ottenere il motivo del fallimento di mail() andando a guardare l'ultimo errore generato con error_get_last()['message']), ma non è chiaro il contesto di questi casi; a me risulta invece che non viene mai settato, e neppure mail() genera E_WARNING per cui non c'è nessun errore da gestire. Ho scoperto che in realtà qualche retroazione si può ottenere sfruttando il parametro opzionale di mail() che consente di impostare opzioni custom. L'effetto di queste opzioni dipende dallo specifico processo "sendmail" usato. Per esempio, con Exim e Sendmail si può mettere "-oep -oeq -oi" per cui mail() ha sempre successo anche se alcuni destinatari vengono respinti e anche se il messaggio è formalmente sbagliato (cioè non rispetta il formato RFC822); in tali casi: - l'errore viene loggato da sendmail nello stderr e quindi va a finire nel log degli errori del server; - il messaggio non viene inviato a nessun destinatario, neanche quelli validi; - nessun bounce viene generato. Ne segue che il programma non ha più retroazione del fallimento, però rimane una traccia permanente nel log file del server e si riducono i fastidiosi bounce. Per avere retroazione dell'errore a livello del programma bisogna per forza usare direttamente il processo sendmail e catturarne lo stderr con la triade popen(), fwrite() e pclose(), una cosa abbastanza acrobatica che sto cercando di far fare a PHPMailer. L'ultima possibilità è ricorrere direttamente al protocollo SMTP perché solo questo dà il massimo controllo su quello che accade e permette di saper quali destinatari sono stati accettati e quali no, e sapere se alla fine della fiera il messaggio è stato accettato per il recapito oppure no; anche questo sto cercando di curarlo in PHPMailer. Spero che possa tornare utile a qualcuno. Ciao, ___ /_|_\ Umberto Salsi \/_\/ www.icosaedro.it
Back to it.comp.www.php | Previous | Next — Previous in thread | Find similar | Unroll thread
mail() fallisce solo se tutti i destinatari vengono respinti? Umberto Salsi <salsi@icosaedro.it> - 2018-06-12 13:16 +0200
Re: mail() fallisce solo se tutti i destinatari vengono respinti? Alessandro Pellizzari <shuriken@amiran.it> - 2018-06-12 12:35 +0100
Re: mail() fallisce solo se tutti i destinatari vengono respinti? Umberto Salsi <salsi@icosaedro.it> - 2018-06-13 11:24 +0200
Re: mail() fallisce solo se tutti i destinatari vengono respinti? Umberto Salsi <salsi@icosaedro.it> - 2018-06-18 12:05 +0200
csiph-web