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

如何在Python中添加邮件附件(MIMEBase)

发布时间:2023-12-14 03:28:05

在Python中使用emailemail.mime模块可以处理邮件的创建、发送和附件添加等操作。email.mime模块提供MIME类型的处理功能,而email模块则提供了邮件的基本组成部分的类。

下面是一个使用email.mime模块添加邮件附件的示例代码:

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

# 邮件发送者和接收者的邮箱地址
sender = 'sender@example.com'
receiver = 'receiver@example.com'

# 创建一个带附件的邮件对象
message = MIMEMultipart()
message['From'] = sender
message['To'] = receiver
message['Subject'] = '包含附件的邮件'

# 邮件正文
message.attach(MIMEText('这是一封带附件的邮件。', 'plain'))

# 添加附件
filename = 'example.txt'
attachment = open(filename, 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
message.attach(part)

# 发送邮件
try:
    server = smtplib.SMTP('smtp.example.com', 587)  # 例如:smtp.gmail.com, 587
    server.starttls()
    server.login(sender, 'password')  # 邮箱密码或是应用程序密码
    server.sendmail(sender, receiver, message.as_string())
    server.quit()
    print('邮件发送成功')
except Exception as e:
    print('邮件发送失败:', e)

在上面的代码中,首先导入了smtplib模块用于发送邮件,同时还导入了相关的email.mime模块和email模块中的类。

通过MIMEMultipart类创建了一个带附件的邮件对象。使用MIMEText类设置了邮件的正文。然后,打开并读取待添加的附件文件,使用MIMEBase类创建了一个MIME类型为"application/octet-stream"的附件对象。设置附件对象的内容、编码和文件名,并将附件对象添加到邮件对象中。

最后,使用smtplib.SMTP连接并登录到SMTP服务器,通过sendmail方法将邮件发送出去,然后关闭连接。

在实际使用时,需要根据具体的邮箱设置和要添加的附件类型进行相应的调整。