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

使用Python中的MIMEText模块发送带附件的电子邮件

发布时间:2024-01-01 06:50:47

使用Python中的MIMEText模块可以方便地发送带附件的电子邮件。MIME(Multipurpose Internet Mail Extensions)是一种邮件扩展格式,它允许发送带有非文本附件的电子邮件,例如图片、音频、视频等。

首先,我们需要导入smtplib、MIMEText和MIMEBase模块:

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

接下来,我们需要指定发件人、收件人、主题和内容,创建一个MIMEMultipart对象,并设置相关的属性:

from_addr = 'sender@example.com'
to_addr = 'recipient@example.com'
subject = 'Hello from Python'
body = 'This is a test email with attachment.'

msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject

然后,我们创建一个MIMEText对象,将正文内容添加到MIMEMultipart对象中:

msg.attach(MIMEText(body, 'plain'))

接下来,我们需要读取要发送的附件文件,并将其添加到MIMEMultipart对象中:

filename = 'example.txt'
attachment = open(filename, 'rb')

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

注意:在上述代码中,我们假设要发送的附件文件名为example.txt。你可以根据自己的需要修改文件名和路径。需要确保该文件存在,并且具有可读权限。

最后,我们可以使用smtplib模块中的SMTP类实例化一个SMTP对象,并使用邮件服务器进行身份验证和邮件发送:

server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login(from_addr, 'password')  # 邮件服务器的登录凭据

text = msg.as_string()
server.sendmail(from_addr, to_addr, text)
server.quit()

在上述代码中,我们假设发送邮件的SMTP服务器地址为smtp.example.com,使用默认的587端口,并且SMTP服务器要求进行安全的传输层连接(TLS)。

完成上述步骤后,运行Python脚本,即可发送带有附件的电子邮件。

总结:使用Python中的MIMEText模块发送带附件的电子邮件非常简单。我们首先创建一个MIMEMultipart对象,并设置发件人、收件人、主题和正文。然后,将要发送的附件添加到MIMEMultipart对象中。最后,使用SMTP类实例化一个SMTP对象,并使用邮件服务器进行邮件发送。希望这个例子可以帮助你使用Python发送带附件的电子邮件。