电子邮件仅发送给第一个收件人 smtp mail python

Posted

技术标签:

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

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

我正在编写一个脚本来使用 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 正确的。事实上,它发送邮件成功。

我尝试过关注旧帖子:

How to send email to multiple recipints using python smtplib? SMTP sent mail to many recipients but doesn't received it Send Email to multiple recipients from .txt file with Python smtplib Why can't I send emails to multiple recipients with this script? 和 many more

【问题讨论】:

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

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

【讨论】:

以上是关于电子邮件仅发送给第一个收件人 smtp mail python的主要内容,如果未能解决你的问题,请参考以下文章

通过 smtp 发送电子邮件并更改发件人姓名

php使用smtp类发送邮件

Mail

bWAPP----Mail Header Injection (SMTP)

linux mail.rc 邮件发送设置

Pear PHP Mail 发送 CC 似乎不起作用