首页 > 解决方案 > 退回的电子邮件检查

问题描述

我正在编写一个程序来检查哪些电子邮件地址已退回(未送达)并在 Python 中为其生成一个列表。但到目前为止,我只在收件箱的第一页收到退回的电子邮件(从我的代码中了解)。这是我到目前为止所拥有的:

inbox = {}

for item in items:

# getting email content
resp, data = M.fetch(item, "(RFC822)")
email_content = data[0][1]

msg = email.message_from_bytes(email_content)
content_list = msg.as_bytes().decode(encoding='UTF-8').split('\n')

# retrieve email address sent out
for cl in content_list:
    if cl.startswith('To: '):
        inbox[cl.replace("To: ", '').strip()] = 1
    #print(cl) this prints out the sent email addresses

fail_content = ['Delivery Status Notification (Failure)','Undeliverable:','DELIVERY FAILURE:','Returned mail:','Undelivered Mail Returned to Sender']

# check Inbox
M.select('INBOX')
resp, items = M.search(None,"All")
items = items[0].split()
#print(items) prints out the number of inbox emails

for item in items:
resp, data = M.fetch(item, "(RFC822)")
email_content = data[0][1]
msg = email.message_from_bytes(email_content)

# check for all possible fail content
for fc in fail_content:
    if fc in msg['Subject']:
        # get email content
        content_list = msg.as_bytes().decode(encoding='UTF-8')
        # find its sender
        for eo in inbox:
            if eo in content_list:
                inbox[eo] = 0

print(inbox)

标签: pythonarrayslistsmtp

解决方案


推荐阅读