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

Python中使用email.mime.application模块发送带附件的邮件

发布时间:2024-01-02 02:00:10

在Python中,我们可以通过email.mime.application模块来发送带附件的邮件。该模块提供了一种用于创建Email消息的特殊类,以便可以添加附件到消息中。

下面是一个示例,演示如何使用email.mime.application模块发送带附件的邮件:

import smtplib
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart

# 创建一个包含附件的邮件消息
msg = MIMEMultipart()
msg['From'] = 'sender@example.com'
msg['To'] = 'receiver@example.com'
msg['Subject'] = 'Email with attachment'

# 添加附件
with open('path/to/attachment.pdf', 'rb') as file:
    attachment = MIMEApplication(file.read(), Name='attachment.pdf')
    attachment['Content-Disposition'] = 'attachment; filename="attachment.pdf"'
    msg.attach(attachment)

# 发送邮件
try:
    smtpObj = smtplib.SMTP('smtp.example.com')
    smtpObj.sendmail('sender@example.com', 'receiver@example.com', msg.as_string())
    print('邮件发送成功')
except Exception as e:
    print('邮件发送失败:', str(e))
finally:
    smtpObj.quit()

在上面的代码中,首先我们从email.mime.application模块导入了MIMEApplication类,以及从email.mime.multipart模块导入了MIMEMultipart类。

然后,我们创建一个MIMEMultipart对象,用于存储邮件的各个部分。该对象的['From']['To']['Subject']属性可以用于设置发件人、收件人和邮件主题。

接下来,我们使用open()函数打开附件文件,并将其内容读取到一个字符串中。然后,我们创建一个MIMEApplication对象,将附件内容作为参数传入,并设置其Name属性为附件的文件名。最后,我们设置MIMEApplication对象的['Content-Disposition']属性为'attachment',以指示该部分是一个附件。然后,我们将该附件添加到MIMEMultipart对象中。

最后,我们使用smtplib库创建一个SMTP对象,并使用其sendmail()方法发送邮件。sendmail()方法需要指定发件人、收件人和邮件消息。由于邮件消息是一个MIMEMultipart对象,我们使用msg.as_string()将其转换为字符串形式。

如果邮件发送成功,我们输出"邮件发送成功";否则,我们捕获异常并输出"邮件发送失败"。

在代码的最后,我们使用smtpObj.quit()关闭与SMTP服务器的连接。