python - Python smtpib - 向多个收件人发送电子邮件
问题描述
我想向多个收件人发送一封电子邮件,但我似乎只能用一个字来表达。有人有什么想法吗?我在下面包含了代码,以及我尝试过的代码不起作用
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()
解决方案
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.返回值
当发送多个地址的消息时,结果不仅可以是成功或失败,还可以是部分成功,一些地址被接受,一些地址被拒绝。同样,有关详细信息,请参阅文档。
推荐阅读
- reactjs - 将 dispatch 作为 prop 传递给共享组件,从既是功能组件又是类组件的组件
- stripe-payments - 在测试中与来自其他域的网页交互
- java - 卡夫卡生产者禁用
- c++ - 在 OpenGL 2D 中为敌人制作生成器
- .net - 修改流单元 dotnet SDK - Azure 流分析
- android - 即使在 vivo 和 oppo 设备中授予自动启动权限后,AccessibilityService 也会被禁用
- html - 具有链接到相同索引的模式
- python - Python中的RGB数据到拜耳格式的转换
- javascript - 观众不改变/使用不同的模拟
- python - 如何使 tkinter Treeview 行条目图标显示为默认值?