本文介绍了Python电子邮件-只能将邮件发送到一个地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的Sendmail函数如下所示:
MY_SMTP = #I can't show it here
def SendMail(authentication_data, email_from, email_to_list, email_cc_list, email_subject, email_message, list_file)
user_name = authentication_data["name"]
user_password = authentication_data["password"]
msg = MIMEMultipart(email_message)
server = smtplib.SMTP(MY_SMTP)
server.starttls()
emails_list_string = ", ".join(email_to_list)
emails_cc_list_string = ", ".join(email_cc_list)
msg["From"] = email_from
msg["To"] = emails_list_string
msg["Cc"] = emails_cc_list_string
msg["Subject"] = "TEST"
msg["Date"] = email.Utils.formatdate()
msg.attach(MIMEText(email_message))
server.login(user_name, user_password)
server.sendmail(email_from, emails_list_string + ", " + emails_cc_list_string, msg.as_string())
server.quit()
当我使用此函数传递Email_to_List的电子邮件地址列表时,它只向列表的第一个元素发送一封电子邮件。为mail_cc_list传递任何列表只会将地址添加到电子邮件中的抄送字段,但我认为这纯粹是装饰性的,因为当我使用此函数发送电子邮件时,抄送中的人看不到电子邮件。基本上只有Email_to_List中的第一个地址才会收到电子邮件。
推荐答案
documentation表示:
必需的参数是RFC 822发件人地址字符串、RFC 822收件人地址字符串列表(空字符串将被视为具有1个地址的列表)和消息字符串。
当您将emails_list_string + ", " + emails_cc_list_string
作为第二个参数传递给server.sendmail
时,它会将其视为单个地址,可能会去掉第一个逗号之后的所有内容。改为尝试以下操作:
server.sendmail(email_from, email_to_list + email_cc_list, msg.as_string())
这篇关于Python电子邮件-只能将邮件发送到一个地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!