Domanda sui rapporti di consegna senza successo nell'invio di e -mail di massa

StackOverflow https://stackoverflow.com/questions/5847985

  •  27-10-2019
  •  | 
  •  

Domanda

Ho un database di circa 10k utenti che si sono iscritti alle newsletter. Sto cambiando il mio sito da ASP a PHP. Sto inviando newsletter da Cron Job. Voglio tenere traccia del record del rapporto di consegna senza successo. Come è possibile? Per favore guidami, grazie.

È stato utile?

Soluzione

In PHP quando si invia posta la posta con funzione di posta, è necessario verificare con la condizione

if (mail ($ to, $ soggetto, $ message, $ headers)) {// consegna di posta corretta} else {// codice per un insuccessfull Mailing}

Questo è altamente inaclusionato per ciò che l'OP sta effettivamente cercando di fare ... Dal manuale:

È importante notare che solo perché la posta è stata accettata per la consegna, non significa che la posta raggiungerà effettivamente la destinazione prevista.

A seconda del tipo e della configurazione del server otterrai risultati variabili. È meglio utilizzare SMTP per garantire un'interfaccia adeguata e coerente. Generalmente userei una biblioteca per farlo ... Potresti farlo da solo usando le prese, ma perché reinventare la ruota? Ci sono 3 librerie che uso a seconda del progetto ...

Per questo livello di interazione userei Swiftmailer o Zend_Mail. Entrambi questi supportano ottenere informazioni da SMTP e di inviare il messaggio, quindi ad esempio puoi ottenere informazioni sui destinatari non riusciti (Esempio di switftmailer). Sia Zend che Swift supportano anche le code personalizzate in modo da poter integrare più profondamente la coda e l'invio di messaggi in modo consapevole dell'applicazione. Swiftmailer ha anche funzionalità batchsend ... Presumo che sia disponibile anche in Zend_mail, ma non ho mai scavato in profondità.

Questa è solo la metà della battaglia però ... Per leggere effettivamente gli NDR devi accedere allo script al Mail Store, a loop attraverso i messaggi e poi analizzare le intestazioni e/o il corpo del messaggio dell'NDR (Assicurati di fare riferimento ai documenti RFC elencati su Wikipage), quindi agire in base a quello. Di recente ho usato Zend_mail_storage per gestire questo. Se hai bisogno di farlo, probabilmente vuoi anche andare avanti e utilizzare anche Zend_Mail per l'invio poiché l'archiviazione è inclusa nel componente. Dovrai dare un'occhiata alla RFC per i codici NDR e di stato per analizzare correttamente.

Nel complesso, se possibile, ti consiglio di integrare solo un servizio di terze parti come Mailchimp o Contatto costante. È molto meno lavoro e, a meno che tu non abbia un team di sviluppatori che ci lavora nel tempo, probabilmente un servizio produrrà risultati migliori su tutta la linea.

Altri suggerimenti

In PHP quando si invia posta la posta con funzione di posta, è necessario verificare con la condizione

if (mail ($ to, $ soggetto, $ message, $ headers)) {// consegna di posta corretta} else {// codice per un insuccessfull Mailing}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top