email - Python3 : Send email message containing binary data?

标签 email python-3.x smtp message mime

following失败:

>>> a = email.message.Message()
>>> a.set_payload(b'some data')
>>> a.as_string()
TypeError: string payload expected: <class 'bytes'>

它也无法明确使用生成器并调用 flatten .消息正文转换为 ASCII,应用转义,然后最终转换为字节以进行传输,那么为什么我不能设置字节负载?

我如何获取带有 smtplib.SMTP.send_message 字节负载的非 MIME 消息?会接受吗?

最佳答案

请记住:在 Python 3 中,字符串是 全部 单码。您实际上是给 Python 一个 bytes 对象,然后告诉它您想要一个 unicode 字符串,但没有告诉它使用哪种编码将 bytes 对象转换为字符串。

您需要做的是将编码作为第二个参数提供给 set_payload()打电话,像这样:

test = email.message.Message()
test.set_payload(b'some example_data', 'latin1') # use latin-1 for no-op translation
test.as_string()

'MIME-Version: 1.0\nContent-Type: text/plain; charset="latin1"\nContent-Transfer-Encoding: base64\n\nc29tZSBleGFtcGxlIGRhdGE=\n'

这确实提供了一个 MIME 类型的消息——希望这对你有用。

关于email - Python3 : Send email message containing binary data?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591829/

相关文章:

电子邮件标题:发件人与 x 发件人

python-2.7 - Python 2 : someIterator. next() 与 next(someIterator):Python 3

Python 脚本不遍历数组

python-3.x - tensorflow中不同学习率的多任务学习

PHPMAILER 不发送且不给出错误

email - Amazon SES 可用于公司电子邮件

node.js - 使用 Node.js 4.3 从 MIME 电子邮件中提取附件

javascript - 我正在尝试使用 process.env 和 smtp gmail 在 meteor 中发送电子邮件

vb.net - VB : Email sending with SMTP is failing

php - 拉维尔 : I can't use Request object two times at the same function