python - Imaplib 转发来自 gmail 的带有附件的邮件(Python)
问题描述
对不起我的英语不好。我需要从 gmail 获取邮件(此邮件可以包含附件)并从另一封电子邮件转发此邮件。下面是我的转发邮件代码:
for email_id in reversed(items):
status, data = self.imap.fetch(email_id, "(RFC822)")
if status == 'OK':
if count == 2: // this message contains attachment
message = email.message_from_bytes(data[0][1])
message.replace_header("From", FROM_ADDR)
message.replace_header("To", TO_ADDR)
try:
smtp = smtplib.SMTP('smtp.gmail.com', 587)
smtp.starttls()
smtp.login(CLIENT_MAIL, CLIENT_PASSWORD)
smtp.sendmail(FROM_ADDR, TO_ADDR, message.as_string())
smtp.quit()
print("send mail")
except BaseException as e:
print(e)
count += 1
如果邮件仅包含文本(无附件),则此代码有效
解决方案
你的错误信息是什么?
另外,如果您使用的是 Python 3.2+,您是否尝试过使用smtp.send_message(message, FROM_ADDR, TO_ADDR)
而不是smtp.sendmail()
?看起来它正在努力更正确地做事,尤其是在 SMTP 连接中的字符编码方面。
推荐阅读
- drupal - 如何在 Twig 中以纯文本形式显示变量的内容?
- regex - number(a,b) 格式的有效正则表达式
- c++ - 尝试使用采用结构并设置值的函数创建链表
- wordpress - 如何重置重力表单中所有记录的特定字段
- android - 如何在颤动中显示带有提交按钮和隐藏输入字段的html表单
- java - Java弹性搜索:获取索引的最后一个ID
- apache-kafka - 为什么消息代理不提供发送的总数据/消息指标?
- gemfire - 我可以将 Geode/Gemfire 区域“固定”到特定的服务器子集吗?
- microsoft-graph-toolkit - 如何使用具有应用程序权限(客户端凭据)的 Microsoft Graph Toolkit
- python - Discord bot 命令在我删除代码后继续工作,并输出我删除的几个字符串