【问题标题】:using python smtp,only one receipent is getting mail使用 python smtp,只有一个收件人收到邮件
【发布时间】:2019-07-30 03:23:05
【问题描述】:

我是 python 新手,下面是假设将邮件发送到多个收件人但只有 dipeshyog94@gmail.com 收到邮件的代码。 milanthapa898@gmail.com 在 To 上排名第二,在 cc 上的 alexlee94@gmail.com 没有收到邮件

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import smtplib

owner_emp_id_email = "dipeshyogi94@gmail.com,milanthapa989@gmail.com"
mymail='milanthapa898@gmail.com'
msg = MIMEMultipart()
msg['From'] = mymail
msg['To'] = owner_emp_id_email
cc_mail = "alexlee94@gmail.com"
msg['Cc'] = cc_mail
print('####44444444444444########\n')
print(owner_emp_id_email)
msg['Subject'] = 'Automated Test Mail with python'
a = 'Milan Thapa'
#body = 'Dear '+spoc_name+',\n\nYou have created new job with below Details:\n\nProject ID : '+project_ID+'\n\nProject Name : '+ibu_name+'\n\nJob Description : ' +job_description +'\n\nThanks and Regards,\n\nMilan Thapa'
html = """\
            <html>
                <head></head>
                    <body>
                        <p>'Dear <b>{}<b>

                        </p>
                    </body>
            </html>
            """.format(a)
msg.attach(MIMEText(html,'html'))
text = msg.as_string()
try:
    server = smtplib.SMTP('smtp.gmail.com:587')

except:
    server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.ehlo()
server.login(mymail,'password')
server.sendmail(mymail,owner_emp_id_email,text)
server.quit()

我被困在无法将邮件发送给多个用户。

任何帮助将不胜感激!

提前致谢

【问题讨论】:

  • 如果这些是真实的电子邮件地址,以这样的方式公开它们几乎肯定会增加您的垃圾邮件负载。也许edit你的问题是用mail1@example.com等占位符替换它们

标签: python python-3.x email


【解决方案1】:
msg['To'] = owner_emp_id_email

这里的owner_emp_id_emailstring。 使其成为电子邮件 ID 列表。然后就可以了。

to_ids = owner_emp_id_email.split(',')
msg['To'] = to_ids

【讨论】:

  • 这仍然无法处理将 Cc: 收件人添加到收件人列表中。
  • 没错,抄送收件人即使在此之后也不会收到邮件
【解决方案2】:

标题中的信息不控制消息实际的去向。 sendmail 的第二个参数是唯一可以控制的地方。这个值应该是一个列表,而不是一个逗号分隔的字符串。

owner_emp_id_email = "dipeshyogi94@gmail.com,milanthapa989@gmail.com"
env_rcpts = owner_emp_id_email.split(",")
# ...
cc_mail = "alexlee94@gmail.com"
env_rcpts.append(cc_mail)
# ...
server.sendmail(mymail,env_rcpts,text)

您会注意到,您还可以添加既不在To:Cc: 中的地址(或许多其他用于相同目的的标头),以有效地实现Bcc:

也许还可以查看send_message,这样您就不必单独将消息转换为可以传递给sendmail的字符串。

【讨论】:

【解决方案3】:

&gt;&gt;&gt; help(smtplib)

to_addrs: A list of addresses to send this mail to. A bare string will be treated as a list with 1 address.

您需要将 CSV 字符串转换为另一个答案中提到的列表。

有了这个答案,我只想演示如何在卡住时使用 python 的惊人帮助功能。

【讨论】:

  • help(smptlib) 调出the entire module documentation 的副本。也许不是一个很好的例子。也许还显示如何谷歌? (抱歉,忍不住了。)
  • 对不起,我忘了提到你将不得不按几次 Enter 并使用你的视觉传感器以及从看似非常可爱的文档中查找类似文本的自然和潜意识任务。哦,如果有兴趣,你还可以学习 4 种不同的东西。
猜你喜欢
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 2015-01-20
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
相关资源
最近更新 更多