2013-04-23 8 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()) 

Я использую этот код для отправки электронной почты. Я могу прикрепить текстовый файл, используя этот скрипт (chenging MIMEImage to MIMEtext). но не может прикреплять изображение. ошибка Не могу предположить Изображение mime подтипне может отправлять электронную почту с приложением из python?

ответ

8

немного догадаться здесь, но, возможно, попробуйте открыть файл в двоичном режиме?

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

вот проблема решена. Теперь ошибка в этой строке server.sendmail (fromaddr, toaddrs, msg.as_string()) –

+0

вопрос отредактирован. теперь ошибка в последней строке –

+0

Я думаю (опять же не тестируя, как я собираюсь), что вам нужно передать toaddrs в виде списка – Brad

5

Попробуйте

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

В моем случае '... _subtype =" svg + xml "...' – cloudrave

+1

не имеет значения, пока сервер не должен угадать, что это такое. – robotik

2

кажется мне, как вы создали "файл" объект, но вы никогда не открыл.

Где у вас есть:

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

Я думаю, что вы вместо того, нужно:

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

Метод «файл» открывает файл. – rafaelvalle

Смежные вопросы