2009-10-15 18 views
20

J'utilise le framework Zend pour envoyer du courrier. Une fois que la configuration est terminée et le code écrit tout cela se résume à un appel:Comment vérifier qu'un e-mail a bien été envoyé lors de l'utilisation de Zend_Mail?

$Mail->send($Transport) 

Comment puis-je vérifier que ce message a été envoyé correctement? J'ai lu quelque part que Zend Mail lève une exception mais d'autres personnes ont dit que ce n'est parfois pas le cas.

Quelle est la manière programmatique à l'épreuve des balles de s'assurer que le courrier a été envoyé correctement lors de l'utilisation de Zend_Mail?

EDIT: Quand je veux dire envoyé, je veux dire envoyé au serveur SMTP.

+0

Envoyé sur le serveur SMTP? ou envoyé à un MTA? – Mez

Répondre

34

Généralement Zend_Mail lèvera une exception si quelque chose ne va pas sur le processus d'envoi - mais cela dépend fortement du Zend_Mail_Transport_* utilisé.

Vous avez deux options:

  • Zend_Mail_Transport_Sendmail (le transport par défaut) repose sur mail(). Si mail() renvoie false, Zend_Mail_Transport_Sendmail lève un Zend_Mail_Transport_Exception (Impossible d'envoyer le courrier). La valeur de retour en elle-même n'est pas très fiable. C'est ce que le manuel dit à propos de la valeur de retour:

    Renvoie TRUE si le courrier a été accepté avec succès pour la livraison, FALSE sinon.

    Il est important de noter que le fait que le courrier ait été accepté pour livraison ne signifie PAS que le courrier atteindra réellement la destination prévue.

  • Zend_Mail_Transport_Smtp envoie l'e-mail en utilisant le protocole SMTP qui est encapsulé dans Zend_Mail_Protocol_Smtp. Dans ce cas, vous obtiendrez un Zend_Mail_Protocol_Exception chaque fois que quelque chose viole le protocole SMTP (envoi de courrier sans indiquer l'adresse d'un expéditeur, par exemple) ou que le serveur STMP signale une erreur ou que la connexion expire.

    Ainsi, si aucune exception n'est générée lors de la conversation avec le serveur STMP, vous pouvez être sûr que le serveur distant a au moins accepté votre courrier électronique.

+0

Désolé j'ai lu votre point sur l'envoi de l'email via un serveur STMP - vous pouvez passer le point 1 dans ma réponse. –

+0

Très bien +1,;) –

+0

Je reçois une erreur de délai de connexion lorsque j'utilise Zend_Mail_Transport_Smtp..Quelle peut être les causes ??? –

0

Je suppose que ce n'est pas le cas. Si "envoi" a échoué, vous obtenez une exception. Mais ce n'est qu'une vérification, que la fonction send() a fonctionné correctement. Cela ne signifie pas que le courrier a été envoyé.

Je suppose que la seule façon de transmettre le courrier est d'insérer un lien de code de confirmation dans le mail et de le faire cliquer sur l'utilisateur.

+0

Je veux dire envoyé au serveur SMTP pas vérifier qu'il a été livré. –

+0

Que je suppose qu'il suffit que le Zend_Transport_SendMail() ne lève pas une exception;) –

Questions connexes