2013-04-23 68 views
1
import smtplib 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 
from email.MIMEImage import MIMEImage 

msg = MIMEMultipart('multipart/related') 

fromaddr = '[email protected]' 
toaddrs = '[email protected]' 


#provide gmail user name and password 
username = '[email protected]' 
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子類型無法發送附件從python的電子郵件?

回答

8

有點猜測在這裏,但也許嘗試在二進制模式下打開文件?

f = file(filename, 'rb') 
+0

那問題就迎刃而解了。現在錯誤在這一行 server.sendmail(fromaddr,toaddrs,msg.as_string()) – 2013-04-23 16:45:28

+0

問題編輯。現在錯誤在最後一行 – 2013-04-23 16:47:13

+0

我認爲(再次不測試,因爲我要去),你需要通過toaddrs列表 – Brad 2013-04-23 16:48:36

5

嘗試

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

在我的情況下,'... _subtype =「svg + xml」...' – cloudrave 2013-12-11 14:02:04

+1

只要服務器不必猜測它是什麼,它並不重要。 – robotik 2015-08-23 21:29:53

2

看起來像你對我創建了一個 「文件」 的對象,但你永遠不打開它。

如果您有:

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

我想你,而不是需要:

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

方法「文件」打開文件。 – rafaelvalle 2015-08-27 19:48:03