On Jun 27, 12:34 pm, Maric Michaud <[EMAIL PROTECTED]> wrote: > Le Friday 27 June 2008 09:03:15 madhav, vous avez écrit : > > > Hello everybody, I need a mechanism to detect email bounces. I tried > > browsing through smtplib implementation and found not helpful in this > > case. Actually it is said in the documentation that if a mail is sent > > to say: "[EMAIL PROTECTED]", then "_send()" in the > > SMTPConnection class returns 550(Unknown recceipient). I checked the > > same but its not returning 550 and return 250(receipient ok). > > This is not the same scenario, the SMTP server that will respond 550 is the MX > for the domain, if you send your mails using an outgoing SMTP server, it > can't know in advance the list of remote adressesbut will bounce your message > when receiving the 550 from the remote MX. > > > Later, I tried getting the smtp error code from the mail body of a > > bounced msg. the "Message" class doesnot have any error code attribute > > by default. We need to get it from the mailbody(by regex ing), which i > > think is not a valid solution, as "550" can occur anywhere in the body > > of any message otherthan the bounced msg also. > > Please help me regarding this. > > Thanks in advance. > > Bounces are multipart messages easily parsed with the email package of the > stdlib (dont' use regexes here). > > Abounce message is of type : > > Content-Type: multipart/report; > report-type=delivery-status; > > a delivery-status imply that one of the subpart of the message is a > message/delivery-status with all needed infos set in the headers. This one is > taken from a real example : > > Content-Description: Delivery report > Content-Type: message/delivery-status > > Reporting-MTA: dns; aristote.info > X-Postfix-Queue-ID: 1D07D1409FF > X-Postfix-Sender: rfc822; [EMAIL PROTECTED] > Arrival-Date: Fri, 27 Jun 2008 09:10:14 +0200 (CEST) > > Final-Recipient: rfc822; [EMAIL PROTECTED] > Original-Recipient: rfc822;[EMAIL PROTECTED] > Action: failed > Status: 5.0.0 > Remote-MTA: dns; tyrande.nerim.net > Diagnostic-Code: smtp; 550 <[EMAIL PROTECTED]>: Recipient address > rejected: > User unknown in local recipient table > > So, for example : > > >>>[48]: import email > >>>[49]: bounce = email.message_from_string(open('ex.eml').read()) > >>>[50]: bounce.get_content_type() > > ...[50]: 'multipart/report' > > >>>[51]: > >>>[52]: for i in bounce.get_payload() : > > ....: if i.get_content_type() == 'message/delivery-status' : > ....: print i.get_payload()[1]['status'] > ....: > ....: > 5.0.0 > > -- > _____________ > > Maric Michaud
Thankyou somuch Maric. Will try the approach you have mentioned. :) -- http://mail.python.org/mailman/listinfo/python-list