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

在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_serversmtp_portsmtp_usernamesmtp_passwordsenderreceiver替换为你自己的SMTP服务器和邮件信息。

注意,需要保证邮件附件的文件路径和附件名称正确。如果要发送多个附件,只需在代码中添加多个MIMEBase对象,分别读取不同的文件并设置不同的文件名即可。

希望以上示例能帮助到你发送带有ZIP附件的邮件。如果有任何问题,请随时向我提问。