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

Python中使用MIMEMultipart()发送带有压缩文件的邮件

发布时间:2023-12-25 18:31:20

在Python中发送带有压缩文件的邮件,可以使用MIMEMultipart()模块来构建邮件的多部分内容。MIMEMultipart()模块可以包含不同的邮件部分,例如文本、附件等。

下面是一个使用MIMEMultipart()模块发送带有压缩文件的邮件的例子:

import smtplib
import os
import zipfile
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders

# 创建MIMEMultipart对象
msg = MIMEMultipart()

# 设置邮件的主题、发件人、收件人
msg['Subject'] = '邮件主题'
msg['From'] = '发件人邮箱'
msg['To'] = '收件人邮箱'

# 添加邮件正文
text = MIMEText('这是邮件正文')
msg.attach(text)

# 压缩文件
file_path = '文件路径'
zip_file_name = '压缩文件.zip'
zipfile.ZipFile(zip_file_name, 'w', zipfile.ZIP_DEFLATED).write(file_path)

# 添加压缩文件附件
attachment = MIMEBase('application', 'octet-stream')
attachment.set_payload(open(zip_file_name, 'rb').read())
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment', filename=zip_file_name)
msg.attach(attachment)

# 发送邮件
smtp_host = 'SMTP服务器地址'
smtp_port = 'SMTP服务器端口号'
username = '发件人邮箱'
password = '邮箱密码'

server = smtplib.SMTP(smtp_host, smtp_port)
server.starttls()
server.login(username, password)
server.sendmail(username, msg['To'], msg.as_string())
server.quit()

# 删除压缩文件
os.remove(zip_file_name)

在上面的代码中,我们首先导入了需要的模块,包括smtplib用于发送邮件,os用于删除压缩文件,zipfile用于压缩文件,以及email.mime模块用于构建邮件。

然后,我们创建了一个MIMEMultipart()对象,设置了邮件的主题、发件人、收件人,并添加了邮件的正文。

接下来,我们使用zipfile模块将需要发送的文件压缩成一个zip文件,并将zip文件作为附件添加到邮件中。

然后,我们设置了SMTP服务器的地址和端口号,并使用SMTP服务器的登录信息进行登录。最后,使用server.sendmail()方法发送邮件,并使用server.quit()方法退出登录。

最后,我们使用os.remove()方法删除了压缩文件,以防止占用空间。

请注意,上述代码中的参数值需要根据实际情况进行替换,例如邮件的主题、发件人、收件人、SMTP服务器地址和端口号、邮箱账号和密码等。

希望这个例子能帮助你发送带有压缩文件的邮件。