通过python + smtplib发送Gmail电子邮件。无法将身体与主体分开

时间:2019-07-18 21:05:01

标签: python character-encoding smtp gmail smtplib

我想通过python脚本从我的gmail acocunt发送电子邮件。
而且我的代码有效。

唯一的是我希望电子邮件具有主题和正文。
但是我的脚本将所有内容都放在了主题中。

这是我的代码:

import smtplib

with smtplib.SMTP("smtp.gmail.com", 587) as smtp:
    smtp.ehlo()
    smtp.starttls()
    smtp.ehlo()

    smtp.login("MY EMAIL", "MY PASSWORD")

    subject = "Contract Details"
    body = "Grettings. Here are the contract details. Thank you."

    msg = f"""Subject: {subject}\n\n{body}"""
    email = "MY EMAIL"
    def encode(x):
        """ The replaces in this function fix some problems in the encoding.
            For now, they are not that relevant. They work. """
        return str(x.encode("ascii", errors="ignore")).replace("b'", "").replace("'", "")

    #  I'm sending it to myself, so the first two arguments are the same:
    smtp.sendmail(encode(email), encode(email), encode(msg))

我试图在线解决问题,很多视频和文章都说您应该使用两条换行符将主题与正文分开。
这就是为什么我使用msg = f"""Subject: {subject}\n\n{body}"""

但是,我得到了: enter image description here

您可以看到我的主体和主体都在主体(红色)中,主体为空白。

我也没有尝试过任何断裂线,一条断裂线,三根断裂线。
我什至尝试写msg = f"""Subject: {subject}\n\nBody: {body}"""
但是什么都行不通...

我如何将主体与主体分开?

1 个答案:

答案 0 :(得分:0)

好,所以我更改了:

smtp.sendmail(encode(email), encode(email), encode(msg))

收件人:

smtp.sendmail(encode(email), encode(email), msg)

现在可以使用了。