Corsi on-line

Risolvere i problemi di invio con PhpMailer ed SMTP

Almeno a mio parere, ma non credo di essere il solo a pensarla in questo modo, la classe PhpMailer non rappresenta soltanto una valida alternativa alla funzione mail() di PHP, ma una soluzione addirittura più valida della funzionalità messa a disposizione dal linguaggio stesso; si tratta di una libreria completa e semplice da utilizzare che potrete sfruttare per tutte le procedure di invio di posta elettronica dal vostro sito Web.

Anche questa classe però, che garantisce un alto livello di affidabilità, non sembra essere del tutto esente dal manifestare alcuni malfunzionamenti. Un caso specifico potrebbe essere rappresentato dall’invio di email tramite ciclo attraverso protocollo SMTP, potrebbe infatti accadere che, nel tentativo di inviare uno stesso messaggio in Copia Conoscenza Nascosta, dopo la notifica di errori relativi a destinatari inesistenti venga visualizzata la seguente segnalazione:

The following From address failed: info@tuosito.com

Tale problema sembrerebbe verificarsi quando la connessione al server non viene terminata; dato il suo scopo, ci si aspetterebbe che disabilitando la proprietà

$email->SMTPKeepAlive

essa dovrebbe chiudere la connessione in modo automatico, una funzione che nella maggior parte dei casi sarebbe quella attesa, ma che sembrerebbe non verificarsi sempre quando occorrono delle eccezioni, come per esempio quando si verifica l’inesistenza di un destinatario.

Per ogni problema esiste però una soluzione, per cui, continuando a ipotizzare che l’oggetto di classe sia stato generato dalla seguente istanza:

$email = new PHPmailer();

sarà possibile eliminare il malfunzionamento forzando la chiusura della connessione subito dopo la chiamata del metodo per l’invio:

if(!$email->Send()){
  echo "Errore nell'invio!"
}else{
  echo 'Email inviata correttamente!';
}
$email->SmtpClose();

In questo modo, ad ogni iterazione del ciclo, e quindi ad ogni invio, la connessione verrà terminata e poi nuovamente richiesta, scongiurando così gli effetti degli eventuali invii errati precedenti.

Post correlati
I più letti del mese
Tematiche