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')

  1. 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')

  1. 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)

  1. 添加附件

添加附件时需要使用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()
posted on 2023-09-22 17:20  冷沫風  阅读(487)  评论(0编辑  收藏  举报