2011-11-28 26 views
0

我正在用Python进行编程。我已经有一个功能,发送一封电子邮件与附件....我唯一的问题是,我想要的消息是HTML,但我不尊重..... .....带HTML邮件的sendmail

这里是我使用

def enviarCorreo(fromaddr, toaddr, text, file): 
    msg = MIMEMultipart('mixed') 
    msg['From'] = fromaddr 
    msg['To'] = toaddr 
    msg['Subject'] = 'asunto' 
    msg.attach(MIMEText(text)) 
    #adjunto 
    adjunto = MIMEBase('application', "octet-stream") 
    adjunto.set_payload(open(file, "rb").read()) 
    encode_base64(adjunto) 
    anexo = os.path.basename(file) 
    adjunto.add_header('Content-Disposition', 'attachment; filename= "%s"' % anexo) 
    msg.attach(adjunto) 
    #enviar 
    server = smtplib.SMTP('localhost') 
    server.set_debuglevel(1) 
    server.sendmail(fromaddr, toaddr, msg.as_string()) 
    server.quit() 
    return 

功能,我希望你能告诉我什么改变或添加什么,所以我发送消息可能是HTML ....

我现在用的是“混合”多节因为HTML邮件将包含一些不会附加的图像,但会成为邮件的一部分.....

回答

5

更换

msg.attach(MIMEText(text)) 

通过

msg.attach(MIMEText(text, 'html')) 

(默认为 '平原')

+0

感谢人! 工作非常好! – mauguerra

+1

太棒了。不要忘记奖励我;-) – gecco

+0

你知道吗,如果我把放入HTML消息中,并且采用合适的路径,它会在消息中发挥作用吗? 我试图做到这一点,但它只显示X图像(未找到图像)... – mauguerra

2

有发送HTML电子邮件官方文档页面上的一个例子 - http://docs.python.org/library/email-examples.html

+0

谢谢,我试着用这个页面....我的问题是,他们导入这样做“从email.mine.multipart ----”,我不知道为什么不适用于我.....我必须这样做“从email.MIMEMultipart import MIMEMultipart” – mauguerra