我浏览了许多SO帖子和smtplib文档,一切似乎都是正确的,但邮件只发送给列表中的第一个收件人
注意:我使用的是Python3.7,我也尝试过Python2.6,在下面的情况下,邮件只发送给接收者中的第一个收件人
以下是我的代码:
import smtplib
from email.mime.text import MIMEText
sender='from@domain.com'
receiver=['email1@domain.com', 'email2@domain.com', 'email3@domain.com']
msg = MIMEText("message")
msg['Subject'] = "Test Email"
msg['From'] = sender
msg['To'] = ",".join(receiver)
server = smtplib.SMTP("smtp.domain", 25)
sever.sendmail(sender, receiver, msg.as_string())
server.quit()
而不是
sever.sendmail(sender, receiver, msg.as_string())
使用
server.send_message(msg)
SMTP.send_message((是一种发送email.message.message对象的方法,该对象将使用message对象中指定的发送方和接收方。在您的情况下,这将是变量msg(MIMEText是Message的子类(。
我不知道为什么,我在用你的方式使用它时也遇到了类似的问题。可能是因为to_addrs是在as_string((将其添加到消息正文时指定的两次,所以我不知道以后会发生什么。
在SMTP.sendmail((中的to_addrs被描述为:";要将此邮件发送到的地址列表。空字符串将被视为具有1个地址的列表&";,所以这很好。