1
# -*- test-case-name: twisted.mail.test.test_bounce -*-
3
# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
4
# See LICENSE for details.
14
from twisted.mail import smtp
17
From: postmaster@%(failedDomain)s
19
Subject: Returned Mail: see transcript for details
20
Message-ID: %(messageID)s
21
Content-Type: multipart/report; report-type=delivery-status;
22
boundary="%(boundary)s"
29
Content-Type: message/delivery-status
30
Arrival-Date: %(ctime)s
31
Final-Recipient: RFC822; %(failedTo)s
34
def generateBounce(message, failedFrom, failedTo, transcript=''):
37
I'm sorry, the following address has permanent errors: %(failedTo)s.
38
I've given up, and I will not retry the message again.
41
boundary = "%s_%s_%s" % (time.time(), os.getpid(), 'XXXXX')
42
failedAddress = rfc822.AddressList(failedTo)[0][1]
43
failedDomain = string.split(failedAddress, '@', 1)[1]
44
messageID = smtp.messageid(uniq='bounce')
45
ctime = time.ctime(time.time())
47
fp = StringIO.StringIO()
48
fp.write(BOUNCE_FORMAT % vars())
55
line = message.readline()
60
fp.write(message.read())
61
return '', failedFrom, fp.getvalue()