基于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()函数来创建带有附件的邮件的示例。通过将附件添加到邮件中,我们可以发送包含附件的完整邮件给收件人。
