欢迎访问宙启技术站
智能推送

使用email.MIMEMultipartMIMEMultipart()模块在Python中处理邮件批量发送

发布时间:2024-01-07 23:17:07

邮件批量发送是一个常见的需求,可以使用Python的email和smtplib模块来处理。

首先,需要导入相关的模块:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

然后,需要设置发送方和接收方的邮箱地址和认证信息:

from_addr = 'your_email@gmail.com'
password = 'your_password'
smtp_server = 'smtp.gmail.com'
smtp_port = 587

接下来,定义邮件内容和附件等信息:

subject = 'Email Subject'
body = 'Hello, This is the email body.'

msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = ','.join(to_addrs)  # to_addrs是一个收件人列表
msg['Subject'] = subject

msg.attach(MIMEText(body, 'plain'))

# 添加附件
filename = 'attachment.txt'
attachment = open(filename, 'rb')
att = MIMEText(attachment.read(), 'base64', 'utf-8')
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition'] = 'attachment; filename="%s"' % filename
msg.attach(att)

最后,使用smtplib模块连接SMTP服务器并发送邮件:

with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(from_addr, password)
    server.sendmail(from_addr, to_addrs, msg.as_string())

下面是完整的示例代码,以实现批量发送带附件的邮件:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

from_addr = 'your_email@gmail.com'
password = 'your_password'
smtp_server = 'smtp.gmail.com'
smtp_port = 587

to_addrs = ['recipient1@example.com', 'recipient2@example.com']

subject = 'Email Subject'
body = 'Hello, This is the email body.'

msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = ','.join(to_addrs)
msg['Subject'] = subject

msg.attach(MIMEText(body, 'plain'))

filename = 'attachment.txt'
attachment = open(filename, 'rb')
att = MIMEText(attachment.read(), 'base64', 'utf-8')
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition'] = 'attachment; filename="%s"' % filename
msg.attach(att)

with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(from_addr, password)
    server.sendmail(from_addr, to_addrs, msg.as_string())

注意,上述示例代码以使用Gmail作为邮件服务器的场景进行编写。如果使用其他邮件服务器,需要替换相应的SMTP服务器地址和端口。

希望这个例子可以帮助你理解如何使用email和smtplib模块来处理邮件批量发送的问题。