在 Python 中创建简单的纯文本电子邮件

Posted

技术标签:

【中文标题】在 Python 中创建简单的纯文本电子邮件【英文标题】:Create simple plain text Email in Python 【发布时间】:2017-03-17 15:39:34 【问题描述】:

我正在尝试创建一个简单的电子邮件,我想将它发送到 smtp 服务器。

这是我的工作:

from email.message import EmailMessage()
message = 'blabla'
email = EmailMessage()
email['Subject'] = 'bla'
email['From'] = 'someone'
email['To'] = 'someone else'
email.set_payload(message)

问题是,当我打印消息时,

print(email.as_string())
print(email.get_payload())

输出不包含原始消息 (blabla)。 它打印标题数据,并在其下方打印一个空字符串! 这是为什么呢?

我想在 smtp-server 上接收一条消息,解析它并将消息和标题分开,就像在这篇文章中所做的那样:

How can I get an email message's text content using python?

但如果邮件甚至不在电子邮件中,我就不能这样做。 谁能告诉我我做错了什么?

【问题讨论】:

【参考方案1】:

试试这个

#!/usr/bin/python3

import smtplib
import email.message
import email.utils


def send_email(send_from, send_to):

    msg = email.message.Message()
    msg['From'] = send_from
    msg['To'] = send_to
    msg['Subject'] = "E-mail Subject"
    msg.add_header('Content-Type', 'text')
    msg.set_payload("This is your message.")

    smtp_obj = smtplib.SMTP("localhost")
    smtp_obj.sendmail(msg['From'], [msg['To']], msg.as_string())
    smtp_obj.quit()

send_email("your@email.com", "to@email.com,")

【讨论】:

感谢您的代码,但它仍然无法正常工作。 msg.as_string() 打印出消息标题,但内容应该是空白行!它让我发疯。 直接在控制台输入,打印msg.as_string()的输出 @aeduG 如果对您有用,请随时单击箭头接受答案。 感谢您的帮助,我接受了您的回答并点击了箭头。 这个例子中email.utils在哪里使用?

以上是关于在 Python 中创建简单的纯文本电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

到 MailMessage 的纯文本 mime 电子邮件

如何编辑 Mailchimp 自动化电子邮件的纯文本版本?

在 TypeScript 中创建电子菜单?

怎么在html中创建超级链接和电子邮件链接

HTML 格式的 Python 电子邮件 mimelib

如何在 Vue.js 中创建自定义链接组件?