Python:如何在smtp/MIME脚本中更改“to”字段而非添加新字段?

2 投票
2 回答
3684 浏览
提问于 2025-04-16 16:20

这是我正在使用的代码的一部分。我在循环中添加电子邮件;我的问题是,每次循环时并没有改变“收件人”字段,而是把“收件人”的数据一个一个加上去。显然,这会导致一些问题,因为“收件人”字段会越来越长。我尝试过使用 msgRoot.del_param('To'),但没有成功。我甚至试着把 msgRoot['To'] 设置为一个列表的第一个元素,这样我就可以简单地改变那个列表项的值(但也没有成功)。

from email.MIMEMultipart import MIMEMultipart
msgRoot = MIMEMultipart('related')
msgRoot['To'] = 'email@email.com'

2 个回答

2

我就是这么做的:

del msgRoot["To"]
msgRoot["To"] = "email@email.com"

我自己做的博客平台,网址是 http://www.royalbarrel.com/,它是用Mime消息来存储博客文章的。效果很好。如果有人添加评论,我就把消息升级为MimeMultipart格式,第一部分是实际的博客文章,后面的部分是评论。

6

你可以使用 replace_header 方法

replace_header(_name, _value)

这个方法可以用来替换邮件中的某个头部信息。它会找到第一个和你提供的名字 (_name) 匹配的头部,然后用你给的新值 (_value) 替换掉。如果没有找到匹配的头部,就会报错。

这个功能在 2.2.2 版本中新增。

举个例子,

if msgRoot.has_key('to'):
    msgRoot.replace_header('to', someAdress)
else:
    msgRoot['to'] = 'email@email.com'

撰写回答