无法从 python 发送带有附件的电子邮件?
Posted
技术标签:
【中文标题】无法从 python 发送带有附件的电子邮件?【英文标题】:cannot send email with attachment from python? 【发布时间】:2013-04-16 23:19:48 【问题描述】:import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
msg = MIMEMultipart('multipart/related')
fromaddr = 'from@gmail.com'
toaddrs = 'to@gmail.com'
#provide gmail user name and password
username = 'to@gmail.com'
password = 'messifan'
filename = "1.jpg"
f = file(filename)
attachment = MIMEImage(f.read()) # error here
attachment.add_header('Content-Disposition', 'attachment', filename=filename)
.
.
server.sendmail(fromaddr, toaddrs, msg.as_string())
我正在使用此代码发送电子邮件。我可以使用此脚本附加文本文件。(将 MIMEImage 转换为 MIMEtext)。但无法附加图像。 错误是无法猜测图像 mime 子类型
【问题讨论】:
【参考方案1】:试试
attachment = MIMEImage(f.read(), _subtype="jpeg") # error here
【讨论】:
就我而言,... _subtype="svg+xml" ...
只要服务器不用猜它是什么就没有关系。【参考方案2】:
这里有点猜测,但也许可以尝试以二进制模式打开文件?
f = file(filename, 'rb')
【讨论】:
问题解决了。现在这一行 server.sendmail(fromaddr, toaddrs, msg.as_string()) 中的错误 我认为(再次不测试)您需要将 toaddrs 作为列表传递 喜欢这个 toaddrs = ['to@gmail.com'] ?请帮助我【参考方案3】:在我看来您创建了一个“文件”对象,但您从未打开它。
你在哪里:
f = file(filename)
attachment = MIMEImage(f.read()) # error here
我认为你需要:
fp = open(filename, 'rb')
attachment = MIMEImage(fp.read())
fp.close()
【讨论】:
方法“file”打开文件。以上是关于无法从 python 发送带有附件的电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章
从带有附件的 Databricks Notebook 发送电子邮件