在Python中使用email.mime.multipart发送带有ZIP附件的邮件
发布时间:2023-12-14 12:00:03
发送带有ZIP附件的邮件可以使用Python标准库中的smtplib和email模块。下面是一个示例代码,展示了如何发送带有ZIP附件的邮件:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
# 用于发送邮件的SMTP服务器的设置
smtp_server = 'smtp.example.com'
smtp_port = 587
smtp_username = 'username'
smtp_password = 'password'
# 发件人和收件人的设置
sender = 'sender@example.com'
receiver = 'receiver@example.com'
# 创建一个Multipart的邮件对象
message = MIMEMultipart()
message['From'] = sender
message['To'] = receiver
message['Subject'] = '邮件主题'
# 添加邮件正文
message.attach(MIMEText('这是邮件正文', 'plain'))
# 添加ZIP格式的附件
zip_attachment_path = 'path/to/attachment.zip'
attachment_name = 'attachment.zip'
# 创建一个MIMEBase对象用于表示附件
attachment = MIMEBase('application', 'zip')
# 读取附件文件内容并赋值给MIMEBase对象
with open(zip_attachment_path, 'rb') as f:
attachment.set_payload(f.read())
# 对附件进行Base64编码
encoders.encode_base64(attachment)
# 设置附件的文件名
attachment.add_header('Content-Disposition', 'attachment', filename=attachment_name)
# 添加附件到邮件对象中
message.attach(attachment)
# 使用SMTP服务器发送邮件
try:
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_username, smtp_password)
server.sendmail(sender, receiver, message.as_string())
print('邮件发送成功')
except Exception as e:
print('邮件发送失败:', e)
在这个示例中,需要将smtp_server、smtp_port、smtp_username、smtp_password、sender和receiver替换为你自己的SMTP服务器和邮件信息。
注意,需要保证邮件附件的文件路径和附件名称正确。如果要发送多个附件,只需在代码中添加多个MIMEBase对象,分别读取不同的文件并设置不同的文件名即可。
希望以上示例能帮助到你发送带有ZIP附件的邮件。如果有任何问题,请随时向我提问。
