一、smtplib模块
SMTP 简单邮件传输协议,是专门用于发送电子邮件的协议。
SMTP规定了电子邮件应该如何格式化、加密、在邮件服务器之间传递,以及点击发送后计算机要处理的所有其他细节。
利用Python自带的smtplib模块,我们可以实现从第三方SMTP服务器(比如QQ邮箱)登录并发送电子邮件。
——
1. smtplib使用步骤
代码演示:
import smtplib
# 第一步:创建SMTP服务器对象
smtpobj = smtplib.SMTP('smtp.qq.com',587)
# 第二步:首先跟服务器打招呼
smtpobj.ehlo()
# 第三步:如果连接的SMTP的587端口,需要进行连接加密步骤(如果是465端口则可以跳过)
smtpobj.starttls()
# 第四步:登录到SMTP服务器
smtpobj.login('*******@qq.com','aaaabbbbccc')
# 输入邮箱账号以及授权码(这里并不是输入邮箱密码)
# 第五步:发送电子邮件(发件地址,收件地址,内容)
smtpobj.sendmail('*******@qq.com', '########@qq.com',
'Subject: So long. \nDear Alice, so long and thanks for all the fish. Sincerely,Bob') # Subject为邮件主题,通过换行符(\n)来区分主题和正文
#第六步:从SMTP服务器断开
smtpobj.quit()
——
2. 两个重点关注的点
需要重要说明的两个地方:
【01】如何开启第三方SMTP服务器并获得授权码
以QQ邮箱为例,登录自己的QQ邮箱,进入 [设置-账户],即可看到关于SMTP服务开启的选项,点击开启,按照提示要求进行,即可打开我们QQ邮箱的SMTP服务并获得相对应的授权码。
【02】邮件发送中无法使用中文的问题
如果邮件内容中有中文字符
# 第五步:发送电子邮件(发件地址,收件地址,内容)
smtpobj.sendmail('*******@qq.com', '########@qq.com',
'Subject: 大家好\n你好,你好鸭!') # 无法使用中文字符
会出现以下报错
本人也查阅了相关资料,发现该错误一般是出现在Python2的版本中,Python3默认字符集基本都是"utf-8"。
所以也不清楚为啥会出现无法使用中文的情况(要是哪些大神知道这是啥原因,恳请指点一二!)
那就意味着我们不能发中文内容的邮件呢么?
当然不是,在smtplib基础上结合email,我们就能实现。
二、email模块
smtplib与email相结合,我们能够实现更加强大的发送邮件功能,不仅能够发送纯文本,还能够发送html文本邮件、正文中含有图片的邮件以及带有附件的邮件。
那么我们首先来认识了解一下email模块中我们常用的函数方法。
——
1. 常用函数详解
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
通过使用Header()函数,我们可以定义邮件头信息,比如From(发件人)、To(收件人)、Subject(邮件主题)。
msg_root[&