【发布时间】:2011-02-12 14:48:27
【问题描述】:
我正在尝试编写一个脚本,该脚本会自动将符合特定条件的某些电子邮件转发到另一封电子邮件。
我已经使用 imaplib 下载和解析消息,并且电子邮件工作正常,但我不知道如何将整封电子邮件转发到另一个地址。我需要从头开始构建一条新消息,还是可以以某种方式修改旧消息并重新发送?
这是我目前所拥有的(客户端是 imaplib.IMAP4 连接,id 是消息 ID):
import smtplib, imaplib
smtp = smtplib.SMTP(host, smtp_port)
smtp.login(user, passw)
client = imaplib.IMAP4(host)
client.login(user, passw)
client.select('INBOX')
status, data = client.fetch(id, '(RFC822)')
email_body = data[0][1]
mail = email.message_from_string(email_body)
# ...Process message...
# This doesn't work
forward = email.message.Message()
forward.set_payload(mail.get_payload())
forward['From'] = 'source.email.address@domain.com'
forward['To'] = 'my.email.address@gmail.com'
smtp.sendmail(user, ['my.email.address@gmail.com'], forward.as_string())
我确信对于邮件的 MIME 内容,我需要做一些稍微复杂的事情。当然有一些简单的方法可以转发整个消息吗?
# This doesn't work either, it just freezes...?
mail['From'] = 'source.email.address@domain.com'
mail['To'] = 'my.email.address@gmail.com'
smtp.sendmail(user, ['my.email.address@gmail.com'], mail.as_string())
【问题讨论】:
-
这里缺少太多上下文,无法做出任何决定。特别是,您使用的是标准 smtplib 吗?什么版本的 Python。 smtp在哪里初始化,是connect()ed吗?你得到正确的 HELO 响应了吗?
-
这是标准的smtplib,python2.6.4。 smtplib 客户端工作正常——我可以通过传递一个字符串作为 smtp 的最后一个参数来发送简单的文本电子邮件。我只是想找到一种简单的方法,将下载邮件的整个 MIME 内容发送到新地址。
标签: python email smtp imap smtplib