无法从python发送带附件的电子邮件?

时间:2013-04-23 16:26:25

标签: python python-2.7 smtp

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子类型

3 个答案:

答案 0 :(得分:8)

这里有点猜测,但也许尝试以二进制模式打开文件?

f = file(filename, 'rb')

答案 1 :(得分:6)

尝试

attachment = MIMEImage(f.read(), _subtype="jpeg") # error here

答案 2 :(得分:2)

在我看来,就像你创建了一个“文件”对象,但你从未打开它。

你在哪里:

f = file(filename)
attachment = MIMEImage(f.read()) # error here

我认为你需要:

fp = open(filename, 'rb')
attachment = MIMEImage(fp.read())
fp.close()