无法使用 imap 和 smtplib 转发带附件的电子邮件

Cannot forward an email with attachments using imap and smtplib

我读过 on how to forward an email using imaplib and stmplib。我从 gmail 中抓取这些电子邮件(有附件),对它们进行分类并想将它们转发到另一个电子邮件帐户。

我的代码在这里,看起来非常相似:

message.mail.replace_header("From", from_addresses)
message.mail.replace_header("To", to_addresses)
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.login(settings.RECEIPTS_EMAIL_ACCOUNT, settings.RECEIPTS_EMAIL_PASSWORD)
server.sendmail(from_addresses, to_addresses, message.mail.as_string())
server.close()

但是,每当它到达 message.mail.as_string() 上的 sendmail 行时,邮件就会崩溃

*** AttributeError: 'list' object has no attribute 'encode'

如何将其转换为可以通过 imaplib 发送的内容?

根据 its documentationSMTP.sendmail() 接受单个发件人地址,而不是列表。

所以,尝试:

server.sendmail(from_address, to_addresses, message.mail.as_string())

server.sendmail(from_addresses[0], to_addresses, message.mail.as_string())

同样,Message.replace_header 不应传递列表。试试这个:

message.mail.replace_header("From", from_addresses[0])
message.mail.replace_header("To", to_addresses[0])
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.login(settings.RECEIPTS_EMAIL_ACCOUNT, settings.RECEIPTS_EMAIL_PASSWORD)
server.sendmail(from_addresses[0], to_addresses, message.mail.as_string())
server.close()