Python中发送多个附件的email.mime.text用法介绍
发布时间:2024-01-11 10:39:27
在Python中,我们可以使用email.mime.text模块来创建并发送带有多个附件的电子邮件。
email.mime.text模块是email模块的一部分,它提供了一种创建和处理纯文本邮件的方法。它可以用来创建包含文本正文和多个附件的电子邮件。
下面是使用email.mime.text发送多个附件的一个简单示例:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
# 设置发件人、收件人和邮件主题
from_addr = "sender@example.com"
to_addr = "recipient@example.com"
subject = "Sample Email with Attachments"
# 创建一个带有正文和多个附件的消息对象
msg = MIMEMultipart()
msg["From"] = from_addr
msg["To"] = to_addr
msg["Subject"] = subject
# 添加正文
body = "This is the body of the email."
msg.attach(MIMEText(body, "plain"))
# 添加多个附件
attachments = ["path/to/file1.txt", "path/to/file2.txt", "path/to/file3.txt"]
for attachment in attachments:
with open(attachment, "rb") as file:
# 创建一个MIMEApplication对象,表示一个二进制文件
attachment_part = MIMEApplication(file.read())
# 设置附件的Content-Disposition,包括文件名和MIME类型
attachment_part.add_header(
"Content-Disposition",
'attachment',
filename=attachment.split("/")[-1]
)
# 将附件添加到消息对象
msg.attach(attachment_part)
# 连接到SMTP服务器并发送邮件
smtp_server = "smtp.example.com"
smtp_port = 587
smtp_username = "username"
smtp_password = "password"
with smtplib.SMTP(smtp_server, smtp_port) as smtp:
smtp.starttls()
smtp.login(smtp_username, smtp_password)
smtp.send_message(msg)
在上面的示例中,我们首先导入了email.mime.multipart、email.mime.text和email.mime.application模块。然后,我们设置了发件人地址、收件人地址和电子邮件主题。
接下来,我们创建了一个MIMEMultipart对象,它代表了一个带有正文和多个附件的消息。我们使用MIMEText将正文添加到消息对象中。
然后,我们使用一个for循环遍历附件列表,并使用open()函数打开每个附件文件。然后,我们创建一个MIMEApplication对象,表示一个二进制文件,并将文件内容读取到该对象中。我们使用add_header()方法设置附件的Content-Disposition,并将附件添加到消息对象的附件列表中。
最后,我们通过创建一个SMTP对象并连接到SMTP服务器,使用starttls()函数启用TLS保护,使用login()函数登录到SMTP服务器,并使用send_message()函数发送消息。
需要注意的是,我们需要替换示例中的发件人地址、收件人地址、附件列表和SMTP服务器设置为实际的值,以确保示例代码能正常工作。
这是使用email.mime.text发送多个附件的一个简单示例。你可以根据自己的需求进行修改和调整,以满足特定的邮件发送需求。
