Python电子邮件-只能将邮件发送到一个地址 [英] Python email - can only sendmail to one address

查看:27
本文介绍了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电子邮件-只能将邮件发送到一个地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆