当我们需要在Python中发送电子邮件时,通常可以使用smtplib模块来完成。在实际应用中,我们有时候需要向多个联系人发送邮件。下面是一些实现smtp发送多个email联系人的方式:
一、使用字符串连接
最简单也是最常见的方式是将所有的收件人地址用逗号分隔成一个字符串,然后添加到邮件报头的To字段中。示例如下:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
mail_host = 'smtp.example.com' # smtp服务地址
mail_user = 'my_name' # 邮箱账号
mail_pass = 'my_password' # 邮箱密码
sender = 'my_sender@example.com' # 发件人邮箱
receivers = ['first@example.com', 'second@example.com'] # 收件人邮箱,列表格式
message = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
message['From'] = Header("发件人姓名", 'utf-8') # 发件人姓名
message['To'] = Header(",".join(receivers), 'utf-8') # 多个收件人地址用逗号连接
message['Subject'] = Header('Python SMTP测试邮件', 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 连接smtp服务器,默认端口为25
smtpObj.login(mail_user, mail_pass) # 登录邮箱账号
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送邮件
print("邮件发送成功")
except smtplib.SMTPException as e:
print("Error: 无法发送邮件")
需要注意的是,多个邮件地址用“,”分隔,如果有多个联系人,建议使用列表统一存储,方便进行添加和删除。
二、使用MIMEMultipart
除了上述方法以外,MIME模块中的MIMEMultipart类也提供了一种方便的方式,可以添加多个收件人。示例如下:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header
mail_host = 'smtp.example.com' # smtp服务地址
mail_user = 'my_name' # 邮箱账号
mail_pass = 'my_password' # 邮箱密码
sender = 'my_sender@example.com' # 发件人邮箱
receivers = ['first@example.com', 'second@example.com'] # 收件人邮箱,列表格式
msg = MIMEMultipart() # 创建一个MIMEMultipart对象
msg['From'] = Header("发件人姓名", 'utf-8') # 发件人姓名
msg['Subject'] = Header('Python SMTP测试邮件', 'utf-8')
# 添加文本内容
message = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
msg.attach(message)
# 添加附件
with open('report.pdf', 'rb') as f:
attach = MIMEApplication(f.read(), _subtype='pdf')
attach.add_header('Content-Disposition', 'attachment', filename='report.pdf')
msg.attach(attach)
# 添加多个收件人
for receiver in receivers:
msg['To'] = Header(receiver, 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 连接smtp服务器,默认端口为25
smtpObj.login(mail_user, mail_pass) # 登录邮箱账号
smtpObj.sendmail(sender, receiver, msg.as_string()) # 发送邮件
print("邮件发送成功")
except smtplib.SMTPException as e:
print("Error: 无法发送邮件")
在该示例中,我们首先创建了一个MIMEMultipart对象,然后在其中添加了邮件正文和附件,并且在for循环中,为每个收件人单独创建一个邮件,设置了目标收件人的地址并发送邮件。
需要注意的是,由于目标收件人是不同的,因此在每个邮件中设置To字段时,需要将Header中的内容针对每个收件人单独设置。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python smtplib发送多个email联系人的实现 - Python技术站