电子邮件转到第一个收件人只有smtp邮件python

时间:2014-11-22 04:51:56

标签: python email smtplib

我知道,同一个查询有数百个问题。为此表示歉意。我几乎尝试了每一个。但仍然没有得到解决方案。实际上,我从stackoverflow查询中复制了一些代码,并根据我的要求对其进行了改进。

我正在编写一个脚本,使用python为我们的服务器之一发送错误报告。我的问题是Email is sending to first member of RECIPIENTS only.它需要一次发送给经理团队和管理员。

RECIPIENTS = ["mail1@gmail.com", 'mail2@mydomain.in' ]
TO = ", ".join(RECIPIENTS)
USER = "user30@gmail.com"
PASSWD = "userpass"

def sendmail():
    msg = MIMEMultipart('alternative')
    msg['Subject'] = subject()
    msg['From'] = USER
    msg['To'] = TO
    mime_text = MIMEText(get_msg_text(), 'plain')
    msg.attach(mime_text)

    #-- Auth by Gmail
    SERVER = smtplib.SMTP("smtp.gmail.com:587")
    SERVER.starttls()

    try:
       SERVER.login(USER,PASSWD)
    except SMTPAuthenticationError, e:
        logit(e)
        return False

    try:    
        SERVER.sendmail(msg['From'], msg['To'], msg.as_string())
    except Exception, e:
        logit(e)
        return False
    finally:
        SERVER.quit()
    return True


if __name__ == "__main__":
   sendmail()

注意: - 所有提及的功能和模块均已正确import。实际上,它成功发送邮件。

我试过关注旧帖子:

3 个答案:

答案 0 :(得分:1)

请查看我关于smtp和电子邮件的工作

https:\github.com\Shaggs

在您的第一个中,您有一个"但在第二封电子邮件中使用了';尝试删除'并替换为"

答案 1 :(得分:1)

要将电子邮件发送给多个人,您需要在sendmail函数中传递列表而不是字符串。这对您来说很好。

try:    
    SERVER.sendmail(msg['From'], RECIPIENTS, msg.as_string())
except Exception, e:
    logit(e)
    return False

答案 2 :(得分:0)

我已经尝试了这篇文章中的所有组合,并推荐了一种组合,并且使用Python3我无法使其正常工作。这是我设法做到的唯一方法。这不是完美的,因为接收电子邮件的人并没有收到所有发送的电子邮件。

  for email in SMTP["to"]:
       msg = MIMEMultipart()
       msg['From'] = SMTP["user"]
       msg['To'] = email
       msg['Subject'] = f"[Repoman Notifier] Run on {today}!"
       msg.attach(MIMEText(html_builder(report_data), 'html'))

       server = smtplib.SMTP(f'{SMTP["host"]}:{SMTP["port"]}')
       server.starttls()
       server.login(msg['From'], SMTP["password"])

       server.send_message(msg, msg['From'], msg["to"])

       server.quit()