【问题标题】:Python: can't get email to send to multiple recipientsPython:无法将电子邮件发送给多个收件人
【发布时间】:2016-08-21 15:37:15
【问题描述】:

我有一个脚本,它可以从我的网站获取一些数据并每天给我发送一次电子邮件。我试图让这个发送给多个收件人,我已经用我在这里找到的一些代码(在多个解决方案中)调整了脚本,但我发现它只发送一封电子邮件到列表中的第一个收件人。

这是我正在使用的内容的摘录(请记住,完整版在发送给一个收件人时可以 100% 正确工作)...

addr_to   = ['me@icloud.com', 'me2@icloud.com']
addr_from = 'darren@website.co.uk'

smtp_server = 'mail.com'
smtp_user   = 'darren@website.co.uk'
smtp_pass   = 'password'

msg = MIMEMultipart('alternative')
msg['To'] = " ,".join(addr_to)
msg['From'] = addr_from
msg['Subject'] = " Automated email"

当我将此邮件发送到我自己的两个电子邮件地址时,或者如果我将相同的电子邮件地址输入两次,我只会收到一封电子邮件 - 收到的电子邮件在“收件人”字段中显示两个电子邮件地址。

如何让它正常工作?

【问题讨论】:

  • 你试过msg['To'] = ",".join(addr_to)
  • 所以,为了完整起见,您可能应该向我们展示您实际上是如何发送这封电子邮件的。
  • 它实际上是这样工作的 - 请参阅下面我自己的答案

标签: python python-3.x


【解决方案1】:

msg['To'] 需要是一个字符串,而sendmail(sender, recipients, message) 中的recipients 需要是一个列表:

s = smtplib.SMTP('servername')
addr_to   = ['me@icloud.com', 'me2@icloud.com']
addr_from = 'darren@website.co.uk'

msg = MIMEMultipart('alternative')
msg['Subject'] = "Automated email"
msg['From'] = addr_from
msg['To'] = ", ".join(addr_to)
s.sendmail(addr_from, addr_to, "bla")

【讨论】:

  • 啊,好吧,现在我有 s.sendmail(addr_from, addr_to, msg.as_string()) - 我需要对 addr_to 做什么才能使其成为 s.sendmail 中的列表?
  • 是的,这就是为什么我对它为什么不起作用感到困惑
  • 我明白了。这确实令人困惑。恕我直言,它应该可以工作...你能检查一下addr_to 是否真的是一个列表(print(type(addr_to)))吗?
  • - 所以我猜这是一个列表
  • 好的。现在我不知道......对不起
【解决方案2】:

我建议看看yagmail

要发送到多个电子邮件地址,您可以使用以下方法:

import yagmail
yag = yagmail.SMTP()
yag.send(['me@icloud.com', 'me2@icloud.com'], "subject", "contents")

【讨论】:

    【解决方案3】:

    问题解决了!! 用户错误!

    两个电子邮件地址都进入了我的 iCloud 帐户,出于某种原因,我的 iPad 选择只显示一封电子邮件……不是一个线程中包含两封相同的电子邮件,而是一封电子邮件! 我再次尝试将其中一个电子邮件地址转到一个完全独立的帐户,它工作正常!

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 2018-11-19
      • 2015-08-29
      • 2013-09-02
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      相关资源
      最近更新 更多