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

Python中通过MIMEBase模块实现邮件附件的发送

发布时间:2023-12-14 03:30:24

MIMEBase模块是Python标准库中的一个模块,用于创建具有多个MIME元素的邮件。MIME(Multipurpose Internet Mail Extensions)是一种互联网标准,用于描述和标记非ASCII邮件内容的类型。

通过MIMEBase模块,我们可以实现在Python中发送带附件的邮件。下面是一个完整的使用例子:

首先,我们需要导入一些需要的模块:

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

接下来,我们可以设置一些邮件的基本信息,比如发件人、收件人、主题等:

from_addr = 'sender@example.com'     # 发件人邮箱
to_addr = 'receiver@example.com'     # 收件人邮箱
subject = 'Email with Attachment'     # 邮件主题

然后,我们可以创建一个MIMEMultipart对象,用于表示整个邮件,并设置邮件的基本信息:

msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject

接下来,我们需要读取附件文件,并创建一个MIMEBase对象来表示附件内容:

attachment = open('path/to/attachment.pdf', 'rb')     # 附件文件路径
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())

然后,我们需要对附件进行编码和添加一些必要的头部信息:

encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= attachment.pdf")

最后,将附件添加到邮件中,并发送邮件:

msg.attach(part)

server = smtplib.SMTP('smtp.example.com', 587)     # SMTP服务器地址和端口号
server.starttls()
server.login(from_addr, 'password')     # 发件人邮箱和密码
server.send_message(msg)
server.quit()

在这个例子中,我们通过MIMEBase模块实现了将附件添加到邮件中,并通过SMTP服务器发送邮件。

需要注意的是,在发送邮件之前,我们需要填写真实的发件人邮箱地址、收件人邮箱地址、附件文件路径以及SMTP服务器地址和端口号。另外,这个例子中没有对邮件内容进行任何处理,如果需要添加正文内容,可以添加一个MIMEText对象来表示邮件的正文内容。

这就是使用MIMEBase模块发送带附件的邮件的一个例子。通过这个例子,我们可以了解如何使用MIMEBase模块在Python中发送带附件的邮件。