问题:在python3.5中使用sendmail进行邮件发送,mailInfo["to"]为逗号分隔的str类型,结果只有第一个邮件地址能收到邮件。
解决方法:经过多次测试发现MIMEText()["to"]的数据类型与sendmail(from_addrs,to_addrs,...)的to_addrs不同;前者为str类型,多个地址使用逗号分隔,后者为list类型。
解决示例如下:
...
mailInfo = {
"from": "xxxx@xxx.com",
"to": "xxx@xxx.com,xxx@xxx.com,xxx@xxx.com",
"hostname": "smtp.xxx.com",
"username": "xxxx@xxx.com",
"password": "xxxxx",
"mailsubject": "主题",
"mailtext": "正文内容",
"mailencoding": "utf-8"
}
def sendsmtp(mailInfo):
smtp = SMTP_SSL(mailInfo["hostname"])
smtp.set_debuglevel(1)
smtp.ehlo(mailInfo["hostname"])
smtp.login(mailInfo["username"], mailInfo["password"])
msg = MIMEText(mailInfo["mailtext"], "plain", mailInfo["mailencoding"])
msg["Subject"] = Header(mailInfo["mailsubject"], mailInfo["mailencoding"])
msg["from"] = mailInfo["from"]
msg["to"] = mailInfo["to"]
smtp.sendmail(mailInfo["from"], mailInfo["to"].split(','), msg.as_string())
smtp.quit()