无法使用imap和smtplib

时间:2016-01-29 21:59:04

标签: python email imap 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()

但是,只要它发送到sendmailmessage.mail.as_string()行的邮件,就会崩溃

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

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

1 个答案:

答案 0 :(得分:0)

根据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()
相关问题