2010-09-29 12 views
1

J'ai un programme pour envoyer du courrier en utilisant python smtplib. J'ai la partie d'envoi de courrier fonctionnant bien, mais j'ai également besoin de capturer le message de retour de serveur après qu'un courrier ait été envoyé. Par exemple Postfix renvoie le message suivant après un message a été queueed:Comment obtenir une réponse du serveur après l'envoi d'un message en utilisant smtplib SMTP.sendmail

reply: '250 2.0.0 Ok: queued as EB83821273B\r\n' 
reply: retcode (250); Msg: 2.0.0 Ok: queued as EB83821273B 
data: (250, '2.0.0 Ok: queued as EB83821273B') 

Ce que je suis vraiment intéressé est le code d'erreur (250) et l'identifiant de file d'attente (de EB83821273B). Je peux les imprimer si je mets set_debuglevel (1), mais je dois capturer ceci dans une variable pour la consignation et le traitement.

remerciements et salutations,

raj

Répondre

1

Si vous utilisez la méthode sendmail sur une instance SMTP, il retournera

un dictionnaire, avec une entrée pour chaque destinataire que a été refusé. Chaque entrée contient un tuple du code d'erreur SMTP et le message d'erreur joint envoyé par le serveur.

si vous utilisez la méthode docmd sur la même classe, plus il retournera

un 2-tuple composé d'un code de réponse numérique et la ligne de réponse réelle (réponses multilignes sont jointes en une longue ligne)

+0

Il est également intéressant de noter que cette méthode peut soulever les exceptions suivantes:. SMTPHeloError, SMTPRecipientsRefused, SMTPSenderRefused ou SMTPDataError – Johnsyweb

+1

Si j'utiliser la méthode DoCmd je vais devoir ré-écrire essentiellement commande sendmail par commande ri ght? –