Python发送带附件的MIMEText电子邮件
发布时间:2023-12-23 09:56:48
Python提供了smtplib和email库来发送带附件的MIMEText电子邮件。smtplib模块用于发送邮件,而email模块用于构造邮件的内容。
下面是一个使用示例,演示了如何发送带附件的MIMEText电子邮件:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
def send_email(sender, recipient, subject, message, attachment_path):
# 创建一个MIMEMultipart对象,用于构造邮件内容
msg = MIMEMultipart()
# 设置邮件的发件人、收件人和主题
msg['From'] = sender
msg['To'] = recipient
msg['Subject'] = subject
# 添加邮件正文
msg.attach(MIMEText(message, 'plain'))
if attachment_path:
# 读取附件的内容
attachment = open(attachment_path, 'rb')
# 创建一个MIMEBase对象,用于表示附件
part = MIMEBase('application', 'octet-stream')
# 设置附件的内容
part.set_payload(attachment.read())
# 对附件进行编码
encoders.encode_base64(part)
# 添加附件的头部信息
part.add_header('Content-Disposition', f'attachment; filename="{attachment_path}"')
# 添加附件到邮件中
msg.attach(part)
# 关闭附件文件
attachment.close()
try:
# 创建SMTP服务器,并进行登录验证
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender, '<your_password>')
# 发送邮件
server.send_message(msg)
except Exception as e:
print(f"邮件发送失败:{str(e)}")
finally:
# 关闭SMTP服务器连接
server.quit()
# 使用示例
send_email('sender@gmail.com', 'recipient@gmail.com', '测试邮件', '这是一封测试邮件', '附件路径')
在这个示例中,我们首先使用MIMEMultipart类创建了一个msg对象,用于构造包含邮件正文和附件的电子邮件。然后,我们设置了邮件的发件人、收件人和主题,并添加了邮件的正文。
如果附件路径不为空,我们将打开附件文件,并创建一个MIMEBase对象来表示附件。我们将读取附件内容,并对其进行编码和设置附件的头部信息,然后将其添加到msg对象中。
最后,我们使用smtplib库创建一个SMTP服务器,进行登录验证,并发送邮件。如果发送邮件过程中出现异常,我们将捕获并打印错误信息。最后,无论发送是否成功,我们都会关闭SMTP服务器连接。
请注意,你需要将代码中的sender@gmail.com改为你自己的发件人电子邮件地址,recipient@gmail.com改为收件人电子邮件地址,<your_password>改为你的发件人邮箱密码,'测试邮件'改为邮件的主题,'这是一封测试邮件'改为邮件正文内容,'附件路径'改为附件在计算机中的路径。
这个示例代码可以帮助你通过Python发送带附件的MIMEText电子邮件。你可以根据自己的需要修改代码中的参数和内容,以适应不同的场景。
