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

使用email.mime.application模块在Python中发送带有HTML报告附件的邮件

发布时间:2024-01-02 02:05:24

以下是一个使用email.mime.application模块发送带有HTML报告附件的邮件的示例代码:

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

# 邮件信息
sender_email = 'sender@example.com'
receiver_email = 'receiver@example.com'
subject = 'HTML报告邮件'
html_body = """
<html>
<head></head>
<body>
<h1>测试报告</h1>
<p>这是一个测试邮件,附带了HTML格式的报告。</p>
<p>报告内容可以放在这里,并且支持<img>标签等其他HTML元素。</p>
</body>
</html>
"""
attachment_path = 'report.html'

# 创建邮件对象
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = subject

# 将HTML内容添加到邮件中
html_part = MIMEText(html_body, 'html')
msg.attach(html_part)

# 读取附件文件并添加到邮件中
with open(attachment_path, 'rb') as attachment:
    att = MIMEApplication(attachment.read(), 'html')
att.add_header('Content-Disposition','attachment',filename=attachment_path)
msg.attach(att)

# 发送邮件
smtp_server = 'smtp.example.com'
smtp_port = 587
smtp_username = 'username'
smtp_password = 'password'

try:
    with smtplib.SMTP(smtp_server, smtp_port) as server:
        server.starttls()
        server.login(smtp_username, smtp_password)
        server.send_message(msg)
        print('邮件发送成功')
except Exception as e:
    print('邮件发送失败:', str(e))

在这个示例中,我们首先导入了需要的模块,包括smtplib模块用于发送邮件,email.mime.multipart模块用于创建多部分邮件,email.mime.text模块用于创建纯文本或HTML内容,以及email.mime.application模块用于添加附件。

然后,我们设置了邮件的一些基本信息,如发件人、收件人、主题等。html_body变量存储了包含报告内容的HTML代码,attachment_path变量存储了报告文件的路径。

接下来,我们创建了一个MIMEMultipart对象作为邮件容器,并设置发件人、收件人、主题等信息。然后,我们使用MIMEText对象将HTML内容添加到邮件中,使用MIMEApplication对象将附件添加到邮件中。

最后,我们使用smtplib.SMTP类连接SMTP服务器,并使用starttls方法启用加密。然后,我们使用login方法登录SMTP服务器,并使用send_message方法发送邮件。

请注意,你需要将示例中的SMTP服务器、端口号、用户名和密码替换为你自己的信息。另外,在将代码复制到你的项目中之前,建议你对其进行必要的异常处理和适当的调整。