我无法理解为什么我的python代码不能在同一封电子邮件中附加HTML表(第2部分)和普通句子(第1部分)。我试着评论一行message.attach(part2)
,反之亦然。message
对象有问题
port = 587 # For starttls
smtp_server = "smtp.gmail.com"
sender_email = "xyz@gmail.com"
receiver_email = ["abc@qwer.com","def@gmail.com"]
password = getpass.getpass()
message = MIMEMultipart("alternative")
message["From"] = sender_email
message["To"] = ", ".join(receiver_email)
message["Subject"] = "Report"
# Create the plain-text and HTML version of your message
pd.read_csv('tmp.csv').to_html('report_html.html')
html=open('report_html.html').read()
part1=MIMEText("Following are the instances currently running:\n","plain")
part2=MIMEText(html,"html")
message.attach(part1)
message.attach(part2)
context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, port) as server:
server.ehlo() # Can be omitted
server.starttls(context=context)
server.ehlo() # Can be omitted
server.login(sender_email,password)
server.sendmail(sender_email, receiver_email,
message.as_string())
下面给出了我对第1部分和第2部分输出的单独尝试:
您使用了错误类型的
multipart
容器。一个multipart/alternative
容器告诉接收客户端“这里有相同内容的多个变体;显示符合用户偏好和技术能力的选项;以这样或那样的方式显示所有内容。”适合的内容类型是multipart/mixed
或可能是multipart/related
相关问题 更多 >
编程相关推荐