繁体   English   中英

Python smtplib无法附加多个mimetext

[英]Python smtplib cannot attach multiple mimetext

我无法弄清楚为什么我的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部分输出的单独尝试:

胡说

blahblah

您使用了错误的multipart容器。 一个multipart/alternative容器告诉接收方客户“这里是同一内容的多个变体;显示适合用户喜好和您的技术能力的任何一个。” 但是您想说“这里有几个部分;以一种或另一种方式显示所有部分。” 合适的内容类型是multipart/mixed或者可能是multipart/related

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM