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

Python邮件发送教程:利用email.mime.base模块的MIMEBase()函数添加邮件附件

发布时间:2023-12-28 00:16:17

邮件发送是在应用程序中常见的功能之一。Python提供了多种方法来发送邮件,其中一种是使用email模块。

email.mime.base模块提供了MIMEBase类,用于创建邮件附件。MIMEBase类代表了一个通用的MIME基类,可以使用它来创建各种类型的邮件附件。

下面是一个简单的示例,演示如何使用MIMEBase添加邮件附件:

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

def send_email_with_attachment(sender, recipient, subject, message, attachment_path):
    # 创建一个带附件的邮件实例
    msg = MIMEMultipart()
    msg['From'] = sender
    msg['To'] = recipient
    msg['Subject'] = subject

    # 添加邮件正文
    msg.attach(MIMEText(message, 'plain'))

    # 添加附件
    attachment = open(attachment_path, 'rb')
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)  # 编码附件
    part.add_header('Content-Disposition', "attachment; filename= %s" % attachment_path.split("/")[-1])
    msg.attach(part)

    # 发送邮件
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(sender, "your_password")
    server.send_message(msg)
    server.quit()

# 示例用法
send_email_with_attachment("sender@gmail.com", "recipient@gmail.com", "Test Email", "This is a test email with attachment.", "/path/to/attachment.txt")

在上述示例中,我们首先导入了需要的模块和类。然后,我们定义了一个send_email_with_attachment函数,用于发送带附件的邮件。该函数接受发送者和接收者的邮箱地址、邮件主题、消息内容和附件路径作为参数。

在函数体内,我们创建了一个MIMEMultipart对象作为邮件实例,并设置了发送者、接收者和主题。然后,我们使用MIMEText将消息内容添加到邮件实例中。

接下来,我们打开附件文件并将其读取为二进制数据。然后,我们创建一个MIMEBase对象,并使用set_payload方法设置附件数据。使用encode_base64方法编码附件,并使用add_header方法添加附件的元数据。

最后,我们使用smtplib库中的SMTP类连接到SMTP服务器,并使用starttls方法启用安全传输。我们使用login方法进行身份验证,并使用send_message方法发送邮件。最后,我们使用quit方法关闭与SMTP服务器的连接。

示例中的send_email_with_attachment函数可以根据需要进行修改。您可以更改SMTP服务器和端口,以及您的邮箱凭据。