【问题标题】:Email goes to first recipient only smtp mail python电子邮件仅发送给第一个收件人 smtp mail python
【发布时间】:2015-01-20 08:31:40
【问题描述】:

我知道,同一个查询有数百个问题。为此事道歉。我几乎尝试了每一个。但仍然没有得到解决方案。事实上,我从一个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()

注意 :- 所有提到的功能和模块都是imported 正确的。事实上,它发送邮件成功。

我尝试过关注旧帖子:

【问题讨论】:

  • @all :- 请在执行 -1 之前指定原因。如果你不能说明原因,那么你就不是这样做的合适人选。
  • @nu11p01n73R - 我也试过了,有一个错误list has no object lstrip()
  • @nu11p01n73R:- 能否请您链接文档或语法?谢谢
  • 你找到解决方案了吗?
  • edit:没关系,对于所有偶然发现这个线程的人,我在这里找到了一个投票最多的答案:stackoverflow.com/questions/8856117/…

标签: python email smtplib


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我已经尝试了这篇文章中的所有组合以及推荐的组合,但我无法使用 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()
    

    【讨论】:

      【解决方案3】:

      相当老的帖子,但以防万一其他人遇到同样的问题。 我们遇到了同样的问题,我们可以让它工作的唯一方法是使用 MIMEMultipart:

      import smtplib
      from smtplib import SMTP
      from email.mime.multipart import MIMEMultipart
      from email.mime.text import MIMEText
      
      email_to = ['foo@here.com', 'bar@there.com', 'dumb@a.com']
      msg = MIMEMultipart('related')
      msg['Subject'] = " You Tell me"
      msg['From'] = "noReply@every.com"
      msg['To'] = ", ".join(email_to)
      #if reply_to:
      #   msg['Reply-to'] = reply_to
      
      part1 = MIMEText("WHY ME?!?!!", 'html')
      msg.attach(part1)
      
      s = smtplib.SMTP('smtp.server.com')
      s.sendmail("whyme@here.com", email_to, msg.as_string())
      s.quit()
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2019-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-21
          • 2014-12-15
          • 2015-08-29
          • 1970-01-01
          • 2018-11-19
          相关资源
          最近更新 更多