如何使用python在电子邮件正文中附加HTML

如何使用python在电子邮件正文中附加HTML,python,html,email,outlook,Python,Html,Email,Outlook,我正在使用python自动化邮件,它工作得很好。当我尝试将html添加到电子邮件正文时,问题就出现了。HTML代码作为附件添加到outlook邮件中,而不是嵌入到正文中。我如何克服这个问题 from email.mime.text import MIMEText from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipart from smtplib import

我正在使用python自动化邮件,它工作得很好。当我尝试将html添加到电子邮件正文时,问题就出现了。HTML代码作为附件添加到outlook邮件中,而不是嵌入到正文中。我如何克服这个问题

from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from smtplib import SMTP
import smtplib
import sys


recipients = ['abc@emaxple.com','def@example.com'] 
emaillist = [elem.strip().split(',') for elem in recipients]
msg = MIMEMultipart()
msg['Subject'] = str("Trial")
msg['From'] = 'abc@example.com'

msg.preamble = 'Multipart massage.\n'

html="""<html><body><p>Hi!</p>
<a href="www.google.com">Google</a>
</body></html>"""

part2=MIMEText(html,'html') 

part = MIMEText("Hello")

msg.attach(part)
msg.attach(part2)

for excel_file_location in sys.argv[1].split(","):
    part = MIMEApplication(open(str(excel_file_location),"rb").read())
    part.add_header('Content-Disposition', 'attachment', filename=str(excel_file_location.split("\\")[-1]))
    msg.attach(part)


server = smtplib.SMTP("smtp.office365.com",587)
server.ehlo()
server.starttls()
server.login("abc@example.com", "asdgfasgas")

server.sendmail(msg['From'], emaillist , msg.as_string())
从email.mime.text导入MIMEText
从email.mime.application导入MIMEApplication
从email.mime.multipart导入MIMEMultipart
从smtplib导入SMTP
导入smtplib
导入系统
收件人=['abc@emaxple.com','def@example.com'] 
emaillist=[elem.strip().split(','),用于收件人中的元素]
msg=MIMEMultipart()
msg['Subject']=str(“试验”)
msg['From']='abc@example.com'
msg.preamble='多部分按摩。\n'
html=“”嗨

""" part2=MIMEText(html,'html') part=MIMEText(“你好”) 附加信息(部分) 附加信息(第2部分) 对于sys.argv[1]中的excel文件位置,拆分(“,”): part=MIMEApplication(打开(str(excel文件位置),“rb”).read()) part.add\u头('Content-Disposition','attachment',filename=str(excel\u file\u location.split(“\\”[-1])) 附加信息(部分) server=smtplib.SMTP(“SMTP.office365.com”,587) server.ehlo() server.starttls() 服务器登录(“abc@example.com“,“asdgfasgas”) sendmail(msg['From'],emaillist,msg.as_string())
您的邮件需要为multipart/alternative类型。默认的多部分子类型为“混合”。 试试这个:

msg = MIMEMultipart("alternative")

您的代码似乎没有问题,您是否尝试过使用与outlook不同的方式查看电子邮件,例如gmail?为了确保它不是outlook特有的问题,即使我在outlook网站上查看,它的工作方式也是一样的。因为我在我的公司里做这件事,所以每个只在outlook上收到这封邮件的人都要先了解问题是来自outlook还是您的代码,这样您就可以将调试工作引向正确的方向。尝试发送到gmail,并告诉它是否持续