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

Python发送带附件的MIMEText电子邮件

发布时间:2023-12-23 09:56:48

Python提供了smtplib和email库来发送带附件的MIMEText电子邮件。smtplib模块用于发送邮件,而email模块用于构造邮件的内容。

下面是一个使用示例,演示了如何发送带附件的MIMEText电子邮件:

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

def send_email(sender, recipient, subject, message, attachment_path):
    # 创建一个MIMEMultipart对象,用于构造邮件内容
    msg = MIMEMultipart()
    
    # 设置邮件的发件人、收件人和主题
    msg['From'] = sender
    msg['To'] = recipient
    msg['Subject'] = subject
    
    # 添加邮件正文
    msg.attach(MIMEText(message, 'plain'))
    
    if attachment_path:
        # 读取附件的内容
        attachment = open(attachment_path, 'rb')
        
        # 创建一个MIMEBase对象,用于表示附件
        part = MIMEBase('application', 'octet-stream')
        
        # 设置附件的内容
        part.set_payload(attachment.read())
        
        # 对附件进行编码
        encoders.encode_base64(part)
        
        # 添加附件的头部信息
        part.add_header('Content-Disposition', f'attachment; filename="{attachment_path}"')
        
        # 添加附件到邮件中
        msg.attach(part)
        
        # 关闭附件文件
        attachment.close()
    
    try:
        # 创建SMTP服务器,并进行登录验证
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(sender, '<your_password>')
        
        # 发送邮件
        server.send_message(msg)
    except Exception as e:
        print(f"邮件发送失败:{str(e)}")
    finally:
        # 关闭SMTP服务器连接
        server.quit()

# 使用示例
send_email('sender@gmail.com', 'recipient@gmail.com', '测试邮件', '这是一封测试邮件', '附件路径')

在这个示例中,我们首先使用MIMEMultipart类创建了一个msg对象,用于构造包含邮件正文和附件的电子邮件。然后,我们设置了邮件的发件人、收件人和主题,并添加了邮件的正文。

如果附件路径不为空,我们将打开附件文件,并创建一个MIMEBase对象来表示附件。我们将读取附件内容,并对其进行编码和设置附件的头部信息,然后将其添加到msg对象中。

最后,我们使用smtplib库创建一个SMTP服务器,进行登录验证,并发送邮件。如果发送邮件过程中出现异常,我们将捕获并打印错误信息。最后,无论发送是否成功,我们都会关闭SMTP服务器连接。

请注意,你需要将代码中的sender@gmail.com改为你自己的发件人电子邮件地址,recipient@gmail.com改为收件人电子邮件地址,<your_password>改为你的发件人邮箱密码,'测试邮件'改为邮件的主题,'这是一封测试邮件'改为邮件正文内容,'附件路径'改为附件在计算机中的路径。

这个示例代码可以帮助你通过Python发送带附件的MIMEText电子邮件。你可以根据自己的需要修改代码中的参数和内容,以适应不同的场景。