在 MIME 多部分消息中显式指定边界?

Posted

技术标签:

【中文标题】在 MIME 多部分消息中显式指定边界?【英文标题】:Explicitly specifying the boundary in MIME multipart messages? 【发布时间】:2018-05-15 01:20:35 【问题描述】:

我知道如何使用 python3 的email.mime.multipart.MIMEMultipart 类来创建各种多部分电子邮件。

我需要对某些现有的多部分邮件进行“电子邮件手术”,方法是获取正文(其中包含各种 MIME 部分)并删除和添加一些新部分,而不更改电子邮件标题的其余部分。在标头中,有以下示例标头:

Content-Type: multipart/mixed;
        boundary="ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"

...ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 边界用于分隔现有消息部分。

我想使用email.mime.multipart.MIMEMultipart 工具来创建一个带有修改零件的新主体,并且我想在这些零件之间使用相同的ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 边界,这样我就不必回去更改@ 987654326@ 邮件的原始标头中已经存在的标头。

如果我可以在创建这个多部分正文时指定我想要使用的边界的确切文本,那将是理想的,但在 python3 中,email.mime.multipart.MIMEMultipart 包似乎总是创建自己的随机生成的边界字符串。

在 python3 中,有没有办法告诉email.mime.multipart.MIMEMultipart 软件使用我提供的边界字符串?

如果没有,我可以通过获取新生成的消息正文,提取其新的边界字符串(我将其称为“newboundary”,然后将其替换为原始边界(我将其称为“originalboundary "),如下:

msgbodytext = msgbodytext.replace(newboundary, originalboundary)

但如果可能的话,我宁愿不这样做。

关于如何告诉email.mime.multipart.MIMEMultipart 使用我指定的边界字符串的任何想法?谢谢。

【问题讨论】:

【参考方案1】:

我最初误读了这些文档,现在我重新阅读它们,我发现这非常容易。

要将我自己的边界设置为originalboundary 变量的值,我只需要这样做:

msg = email.mime.multipart.MIMEMultipart(boundary=originalboundary)

【讨论】:

以上是关于在 MIME 多部分消息中显式指定边界?的主要内容,如果未能解决你的问题,请参考以下文章

在 GridSearchCV 中显式指定测试/训练集

如何在 Django 中显式重置模板片段缓存?

如何在 Spring Boot 配置中显式传递数据库名称?

在 C++ 中显式删除移动构造函数的用例 [关闭]

在 terraform 模块中显式使用提供程序

在 DataFrameMapper 中显式删除列