Python smtpib-向多个收件人发送电子邮件

时间:2020-05-03 15:31:30

标签: python email

我想发送一封电子邮件给多个收件人,但我似乎只能一字不漏。有人有什么想法吗?我在下面添加了代码,还尝试了不起作用的代码

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

email_user = 'jane@doe.com'
email_password = 'password'
email_send = 'jane@doe.comk' #this works fro single recipient
# have tried but doesn't work: email_send = ['jane@doe.com', 'joe@bloggs.com']

subject = 'Latest FI Prices'

msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = email_send
msg['Subject'] = subject

body = 'Latest FI Prices Attached'
msg.attach(MIMEText(body,'plain'))

filename='FI_Prices.csv'
attachment = open('FI_Prices.csv','rb')

part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+filename)

msg.attach(part)
text = msg.as_string()
server = smtplib.SMTP('smtp.office365.com',587)
server.starttls()
server.login(email_user,email_password)


server.sendmail(email_user,email_send,text)
server.quit()

2 个答案:

答案 0 :(得分:0)

请您尝试以下操作:-

email_send = "jane@doe.com, joe@bloggs.com"

上面应该可以工作。

答案 1 :(得分:0)

SMTP是一种“古老的”协议,我相信我们现在在设计许多功能时会大不相同。

关于您的问题,我想谈两点:

1。邮件及其信封

我不会详细介绍,那里有很多很好的教程。您需要将地址放入邮件标题中,因为此处使用逗号分隔的字符串和注释(通常是收件人的全名或昵称)。示例:

msg['To'] = '"John Doe" <jdoe@example.com>, "Guess Who" <xy@example.com>'

,您需要告诉服务器要将消息发送给谁。第二个地址列表是另一个列表。那里的地址必须没有任何注释(名称)。

to_addrs = ["jdoe@example.com", "xy@example.com"]

幸运的是,您通常希望发送给邮件中列出的那些收件人。在这种情况下,您可以告诉smtplib从邮件中提取地址。参见send_message

2。返回值

发送具有多个地址的消息时,结果不仅是成功或失败,而且在接受某些地址和拒绝某些地址的情况下也可以部分成功。再次,请参阅文档以了解详细信息。