【问题标题】:Python: How can I change the "to" field in smtp/MIME script rather than adding a new one?Python:如何更改 smtp/MIME 脚本中的“to”字段而不是添加一个新字段?
【发布时间】: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'

【问题讨论】:

    标签: python smtp mime


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      相关资源
      最近更新 更多