Kam*_*san 0 python smtplib python-3.x
我正在尝试编写一个非常基本的电子邮件发送脚本。这是我的代码..
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg.set_content("Test message.")
msg['Subject'] = "Test Subject!!!"
msg['From'] = "myemail@gmail.com"
email_list = ["xyz@gmail.com", "abc@gmail.com"]
for email in email_list:
msg['To'] = email
server = smtplib.SMTP(host='smtp.gmail.com', port=587)
server.starttls()
server.login("myemail@gmail.com", "mypassword")
server.send_message(msg)
server.quit()
Run Code Online (Sandbox Code Playgroud)
该脚本应该将邮件发送给多个收件人,因此,我需要msg['To']在循环迭代时更改该字段,但我在下面的回溯中收到以下错误。
Traceback (most recent call last):
File "exp.py", line 66, in <module>
msg['To'] = email
File "/usr/lib/python3.8/email/message.py", line 407, in __setitem__
raise ValueError("There may be at most {} {} headers "
ValueError: There may be at most 1 To headers in a message
Run Code Online (Sandbox Code Playgroud)
我该如何解决?请帮忙。谢谢..
清理消息的“收件人”属性。
for email in email_list:
msg['To'] = email
server = smtplib.SMTP(host='smtp.gmail.com', port=587)
server.starttls()
server.login("myemail@gmail.com", "mypassword")
server.send_message(msg)
server.quit()
del msg['To]
Run Code Online (Sandbox Code Playgroud)
下面是抛出异常的代码:(\Python385\Lib\email\message.py)
def __setitem__(self, name, val):
"""Set the value of a header.
Note: this does not overwrite an existing header with the same field
name. Use __delitem__() first to delete any existing headers.
"""
max_count = self.policy.header_max_count(name)
if max_count:
lname = name.lower()
found = 0
for k, v in self._headers:
if k.lower() == lname:
found += 1
if found >= max_count:
raise ValueError("There may be at most {} {} headers "
"in a message".format(max_count, name))
self._headers.append(self.policy.header_store_parse(name, val))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3171 次 |
| 最近记录: |