tags:

views:

25

answers:

1

Hi,

I have a program to send mail using python smtplib. I have the mail sending part working fine, but I also need to capture the server return message after a mail has been sent. For example postfix returns the following message after a mail has been queueed:

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')

What I am really interested is the error code (250) and the queue id (EB83821273B). I can print these if I set set_debuglevel(1), but I need to capture this in a variable for further logging and processing.

thanks and regards,

raj

+1  A: 

If you are using the sendmail method on an SMTP instance, then it will return

a dictionary, with one entry for each recipient that was refused. Each entry contains a tuple of the SMTP error code and the accompanying error message sent by the server.

if you use the docmd method on the same class, the it will return

a 2-tuple composed of a numeric response code and the actual response line (multiline responses are joined into one long line.)

aaronasterling
It's also worth noting that this method may raise the following exceptions: SMTPHeloError, SMTPRecipientsRefused, SMTPSenderRefused or SMTPDataError
Johnsyweb
If I use docmd method I will have to basically reimplement sendmail command by command right?
Rajkumar S