无法使用 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 documentation,SMTP.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()
我读过 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 documentation,SMTP.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()