如何更改MIMEMultipart对象的属性?

0 投票
2 回答
1036 浏览
提问于 2025-04-28 16:21
from email.mime.multipart import MIMEMultipart
msg=MIMEMultipart('mixed')
msg['To']='test'
msg['To']='test2'
print(msg)

产生

Content-Type: multipart/mixed; boundary="===============1302686855105723805=="
MIME-Version: 1.0
To: test
To: test2

--===============1302686855105723805==

--===============1302686855105723805==--

我本以为test2会替换掉test,但它只是把test2加到了收件人列表里。我不想这样。我想要替换掉当前的收件人,并且重新使用当前的mimemultipart变量/消息,因为我需要用相同的参数给不同的收件人发送多封邮件,而不想把所有收件人都放在邮件头里。我该如何更改当前'MIMEMultipart'类型对象的'To'属性的值,或者丢弃当前的'To'属性呢?

暂无标签

2 个回答

0

你可以使用 replace_header() 这个方法。这个方法会把消息中第一个找到的符合条件的标题替换掉,替换时会考虑标题的顺序和大小写。如果没有找到符合的标题,你就会遇到一个 KeyError 的错误。

在你的情况下,只需要使用 msg.replace_header('To','test2') 就可以了。

2

使用 msg.replace_header() 可以替换掉已经存在的头部信息,比如:

from email.mime.multipart import MIMEMultipart
msg=MIMEMultipart('mixed')
msg['To']='test'
msg.replace_header('To', 'test2')
print(msg)

输出结果:

From nobody Tue Oct 21 09:51:52 2014
Content-Type: multipart/mixed; boundary="===============0295162158244343135=="
MIME-Version: 1.0
To: test2

--===============0295162158244343135==

--===============0295162158244343135==--

撰写回答