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

基于email.mime.base模块的MIMEBase()函数,Python中如何创建带有附件的邮件

发布时间:2023-12-28 00:18:49

在Python中,我们可以使用email.mime.base模块中的MIMEBase()函数来创建带有附件的邮件。MIMEBase()函数是MIMENonMultipart子类的基类,它表示了邮件的主体部分。这个函数需要两个参数:_maintype_和_subtype。

下面是一个带有附件的邮件的创建过程及其使用例子。

首先,我们需要导入所需的模块,并定义从哪个邮箱地址发送邮件、发送的邮箱地址、主题和正文内容。

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

from_addr = 'your_email@gmail.com'          # 发信人的邮箱地址
to_addr = 'recipient_email@gmail.com'       # 收信人的邮箱地址
subject = '邮件主题'                            # 邮件的主题
message = '这是一封带有附件的示例邮件'          # 邮件的正文内容

然后,我们需要创建MIMEMultipart对象,并设置邮件的主题、发信人和收信人。

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

接下来,我们需要将正文内容添加到MIMEMultipart对象中。

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

然后,我们可以通过open()函数打开要添加为附件的文件,并创建MIMEBase对象。

filename = 'attachment.txt'              # 附件文件的路径
attachment = open(filename, 'rb')        # 以二进制模式打开附件

然后,我们需要设置MIMEBase对象的Content-Disposition和Content-Type。

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

接下来,我们需要将MIMEBase对象添加到MIMEMultipart对象中。

msg.attach(part)

最后,我们可以将MIMEMultipart对象转换为字符串,并使用smtplib模块将邮件发送给收件人。

server = smtplib.SMTP('smtp.gmail.com', 587)   # 设置邮件服务器和端口号
server.starttls()                              # 启用TLS加密
server.login(from_addr, 'your_password')       # 登录发信人邮箱
text = msg.as_string()
server.sendmail(from_addr, to_addr, text)       # 发送邮件
server.quit()                                  # 关闭连接

这就是使用email.mime.base模块中的MIMEBase()函数来创建带有附件的邮件的示例。通过将附件添加到邮件中,我们可以发送包含附件的完整邮件给收件人。