【问题标题】:Using Python smtplib to send to distribution lists使用 Python smtplib 发送到分发列表
【发布时间】:2018-07-11 14:27:43
【问题描述】:

我正在使用 SMTPlib 自动发送电子邮件:

emailto = ['distro@email.com','me@email.com']
emailfrom = "me@email.com"

msg = MIMEMultipart('related')
msg['Subject'] = currentdate + " Subject"
msg['From'] = emailfrom
msg['To'] = ", ".join(emailto)  

msgAlternative = MIMEMultipart('alternative')
msg.attach(msgAlternative)
msgAlternative.attach(msgText)

smtpObj = smtplib.SMTP('mail.email.com')
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.sendmail(emailfrom, emailto, msg.as_string())
smtpObj.quit()

当我使用此代码时,我会收到一封电子邮件,其中 distro@email.com 也在“收件人:”行中,但 distro@email.com 中没有人收到它。我之前已经发送到分发列表没有问题,但是这个特定的将不起作用。这是一个相当大的列表(约 100 个收件人)

【问题讨论】:

    标签: python smtplib


    【解决方案1】:

    错误可能会被忽视,因为您在发送到多个地址时没有检查.sendmail() 的结果。

    如果此方法成功将电子邮件发送给至少一个收件人,则不会引发异常。

    文档的重要部分是:

    如果邮件至少被接受,此方法将正常返回 一位收件人。否则会引发异常。 如果此方法没有引发异常,则返回一个字典, 每个被拒绝的收件人都有一个条目。每个条目 包含 SMTP 错误代码的元组和伴随的错误 服务器发送的消息。

    这样的事情应该有助于找到问题:

    errors = smtpObj.sendmail(emailfrom, emailto, msg.as_string())
    for recipient, (code, errmsg) in errors.items():
        # ... print or log the error ...
    

    【讨论】:

    • 这很有帮助,我现在看到我收到了这个错误:550 b'5.1.1 User unknown'
    猜你喜欢
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2021-08-10
    • 2010-10-07
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多