0

我正在尝试使用 flufl.bounce 扫描使用 poplib 下载的电子邮件并检测退回的电子邮件地址。到目前为止,我得到的是很多空集。这是一些示例代码:

import getpass, poplib, email
from flufl.bounce import scan_message


user = 'redacted@redacted.com'
mail = poplib.POP3_SSL('redacted.redacted.com', '995')
mail.user(user)
mail.pass_('redacted')

num_messages = len(mail.list()[1])

for i in range(num_messages):
    for msg in mail.retr(i+1)[1]:
        msg = email.message_from_string(msg)        
        bounce = scan_message(msg)
        print bounce
mail.quit()

print bounce给了我一个空集:

set([])

这个邮箱里有各种类型的退回邮件,我什至可以用 mail.retr 选择一个我知道是退回邮件的邮件,但是当我将它输入 时scan_message,我仍然得到一个空集。我究竟做错了什么?flufl.bounce 文档在这里似乎不是很有帮助。

4

1 回答 1

0

好的,我想通了。msg是电子邮件元素的列表。mail.retr(i+1)[1]因此,我不得不将它与 \n 一起加入,而不是遍历它,然后再将其输入email.message_from_string(),这给了我一个scan_message可以使用的正确消息。这是工作代码

import getpass, poplib, email
from flufl.bounce import scan_message

user = 'redacted@redacted.com'
mail = poplib.POP3_SSL('mail.redacted.com', '995')
mail.user(user)
mail.pass_('redacted')

num_messages = len(mail.list()[1])

for i in range(num_messages):
    x = mail.retr(i+1)[1]
    msg = email.message_from_string("\n".join(x))                
    bounce = scan_message(msg)
    print bounce
mail.quit()
于 2013-11-11T23:58:30.353 回答