Python mimetext参数详解
在Python3中,使用mimetext模块可以轻松地创建电子邮件消息。在发送电子邮件时,我们需要设置邮件的主题、收件人、发件人、正文和附件等信息。而mimetext模块就是用来处理邮件中的文本和附件的。本文将详细介绍mimetext模块中的参数及其用法。
安装步骤
pip3 install smtplib #安装模板
最后实例代码会用到 smtplib
1.MIMEText类
MIMEText类用来创建邮件的正文,它有三个参数:
-
_text:邮件正文内容,可以是纯文本或HTML格式。
-
_subtype:邮件正文内容的类型,可以是"plain"(纯文本)、"html"(HTML格式)。
-
_charset:邮件正文内容的编码方式,常用的有"utf-8"、"gbk"等。
代码如下:
from email.mime.text import MIMEText
# ----------方法1
msg = MIMEText('测试邮件。收到请不用回复', 'plain', 'utf-8')
# -----------方法2
content = '''
<p>我的地址:</p>
<p><a href='http://hldaig.xyz/'>点击进入我的</a></p>
<p>我的公众号二维码:</p>
<p><img src="cid:image"></p>
'''
html = MIMEText(content, 'html', 'utf-8')
2.MIMEImage类
MIMEImage类用来创建邮件中的图片,它有两个参数:
-
_imagedata:图片的二进制数据。
-
_subtype:图片的类型,可以是"jpeg"、"gif"、"png"等。
示例代码:
from email.mime.image import MIMEImage
#-----------方法1
with open('test.jpeg', 'rb') as f:
image_data = f.read()
msg = MIMEImage(image_data, 'jpeg')
# ----------方法2
with open('test.gif', 'rb') as f:
image_data = f.read()
msg = MIMEImage(image_data, 'gif')
# ---------方法3
with open('test.png', 'rb') as f:
image_data = f.read()
msg = MIMEImage(image_data, 'png')
-
MIMEAudio类
MIMEAudio类用来创建邮件中的音频文件,它有两个参数:
-
_audiodata:音频文件的二进制数据。
-
_subtype:音频文件的类型,可以是"mp3"、"wav"等。
示例代码:
from email.mime.audio import MIMEAudio
with open('test.mp3', 'rb') as f:
audio_data = f.read()
msg = MIMEAudio(audio_data, 'mp3')
-
MIMEBase类
MIMEBase类是所有MIME类型的基类,它有四个参数:
-
_maintype:MIME类型的大类,常见的有"text"、"image"、"audio"、"video"、"application"等。
-
_subtype:MIME类型的子类,如"text/plain"、"image/jpeg"、"audio/mp3"等。
-
_encoder:编码方式,可以是"base64"、"quoted-printable"等。
-
_payload:MIME类型的内容,可以是文本、图片、音频、视频等。
示例代码:
from email.mime.base import MIMEBase
with open('test.pdf', 'rb') as f:
pdf_data = f.read()
msg = MIMEBase('application', 'octet-stream')
msg.set_payload(pdf_data)
-
添加附件
添加附件时需要使用MIMEMultipart类,它有一个attach()方法可以添加邮件中的附件。用smtplib模块发送示例代码:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
# 发送者邮箱地址
senderMail = 'xxxxxx@qq.com'
# 发送者 QQ 邮箱授权码
authCode = 'xxxxxxxxx'
# 接收者邮箱地址
receiverMail = 'xxxxxx@qq.com'
# 附件路径
attach_file = r'..\test.py'
# 附件名称
filenames = 'test.py'
subject = '复杂邮件测试'
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = subject
msgRoot['From'] = senderMail
msgRoot['To'] = receiverMail
msgAtv = MIMEMultipart('alternative')
msgRoot.attach(msgAtv)
content = '简单测试内容,收到不用回复'
html = MIMEText(content, 'plain', 'utf-8')
msgAtv.attach(html)
# 构造附件
send_file = open(attach_file, 'rb').read()
text_att = MIMEText(send_file, 'base64', 'utf-8')
text_att["Content-Type"] = 'application/octet-stream'
# 重命名附件文件
text_att.add_header('Content-Disposition', 'attachment', filename=filenames)
try:
server = smtplib.SMTP_SSL('smtp.qq.com', smtplib.SMTP_SSL_PORT)
print('成功连接到邮件服务器')
server.login(senderMail, authCode)
print('成功登录邮箱')
server.sendmail(senderMail, receiverMail, msgRoot.as_string())
print('邮件发送成功')
except smtplib.SMTPException as e:
print('邮件发送异常')
finally:
server.quit()