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

在Python中使用MIMEText发送带有附件的HTML格式电子邮件

发布时间:2024-01-01 06:53:51

要在Python中发送带有附件的HTML格式电子邮件,可以使用Python的smtplib和email库。smtplib库用于连接并发送电子邮件,而email库用于构建电子邮件的各个部分。

首先,我们需要导入所需的库:

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

然后,我们需要创建一个MIMEMultipart对象,该对象将作为电子邮件的容器:

msg = MIMEMultipart()

接下来,我们需要设置电子邮件的发送者、接收者、主题等信息:

msg['From'] = 'your_email@gmail.com'
msg['To'] = 'recipient_email@example.com'
msg['Subject'] = 'Subject of the Email'

然后,我们需要读取HTML文件,并将其添加到MIMEText对象中:

with open('path_to_html_file.html', 'r') as f:
    html_content = f.read()
html_part = MIMEText(html_content, 'html')
msg.attach(html_part)

接下来,我们需要设置附件信息。首先,我们需要读取要附加的文件,并将其添加到MIMEBase对象中:

attachment = open('path_to_attachment_file', 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)

然后,我们需要设置附件的名称,并将附件添加到MIMEMultipart对象中:

part.add_header('Content-Disposition', "attachment; filename= %s" % 'attachment_file_name')
msg.attach(part)

接下来,我们需要连接到邮件服务器并登录:

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('your_email@gmail.com', 'your_password')

最后,我们需要发送电子邮件:

server.sendmail('your_email@gmail.com', 'recipient_email@example.com', msg.as_string())
server.quit()

下面是完整的示例代码:

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

msg = MIMEMultipart()
msg['From'] = 'your_email@gmail.com'
msg['To'] = 'recipient_email@example.com'
msg['Subject'] = 'Subject of the Email'

with open('path_to_html_file.html', 'r') as f:
    html_content = f.read()
html_part = MIMEText(html_content, 'html')
msg.attach(html_part)

attachment = open('path_to_attachment_file', 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % 'attachment_file_name')
msg.attach(part)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('your_email@gmail.com', 'your_password')

server.sendmail('your_email@gmail.com', 'recipient_email@example.com', msg.as_string())
server.quit()

请注意,这只是一个基本示例,你需要根据自己的实际情况进行适当的更改。记得用你自己的电子邮件和密码替换相应的字段。