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服务器的连接。
