Python:如何更改 smtp/MIME 脚本中的“to”字段而不是添加一个新字段?
Posted
技术标签:
【中文标题】Python:如何更改 smtp/MIME 脚本中的“to”字段而不是添加一个新字段?【英文标题】:Python: How can I change the "to" field in smtp/MIME script rather than adding a new one? 【发布时间】:2011-08-11 20:57:38 【问题描述】:这是我正在使用的代码的摘录。我正在循环添加电子邮件的部分;我的问题不是更改每个循环上的“to”字段,而是附加“to”数据。显然这会导致一些问题,因为 to 字段最终会变得越来越长。我试过 msgRoot.del_param('To') 无济于事。我什至尝试将 msgRoot['To'] 设置为引用列表的第一个索引,这样我就可以简单地更改该列表项的值(也不起作用)。
from email.MIMEMultipart import MIMEMultipart
msgRoot = MIMEMultipart('related')
msgRoot['To'] = 'email@email.com'
【问题讨论】:
【参考方案1】:您可以使用replace_header
method。
replace_header(_name, _value)
替换标题。替换消息中与_name 匹配的第一个标头,保留标头顺序和字段名称大小写。如果没有找到匹配的标头,则会引发 KeyError。
2.2.2 版中的新功能。
例如,
if msgRoot.has_key('to'):
msgRoot.replace_header('to', someAdress)
else:
msgRoot['to'] = 'email@email.com'
【讨论】:
在 Python 3.5 中我不得不使用if 'to' in message:
,因为 has_key
已被弃用。
Python 3 更改了 dict 语法。请参阅docs.python.org/3/whatsnew/3.0.html#builtins“已删除。dict.has_key() - 改用 in 运算符。”【参考方案2】:
我只是这样做:
del msgRoot["To"]
msgRoot["To"] = "email@email.com"
我在http://www.royalbarrel.com/ 的自制博客平台使用 Mime 消息以这种方式存储其博客文章。效果很好。如果有人添加评论,我会将消息升级到 MimeMultipart,并让第一个有效负载成为实际的博客文章,随后的有效负载是 cmets。
【讨论】:
以上是关于Python:如何更改 smtp/MIME 脚本中的“to”字段而不是添加一个新字段?的主要内容,如果未能解决你的问题,请参考以下文章
python 是不是有一个强大的 pop3、smtp、mime 库,我可以在其中构建 web 邮件界面?
如何使用 python 脚本更改 tcp keepalive 计时器?
如何保存对 Python 列表所做的更改,以便在重新运行脚本后更新? [复制]