直接上代码吧
# 倒入库,发送邮件基本的四个库
import smtplib # 内置库,不需要pip
from email.mime.multipart import MIMEMultipart # 邮件的内容,邮件收件人,邮件的相关设置
from email.header import Header # 专门构建邮件标题的,这样做,可以支持标题中文
from email.mime.text import MIMEText # 构建邮件头信息,包括发件人,接收人,标题等
from email.mime.image import MIMEImage # 发送图片附件用到的包
import datetime
第一步:连接邮箱服务器,登录邮箱
email_connect = smtplib.SMTP_SSL('smtp.qq.com', 465) # 连接邮箱服务器,第一个参数为邮箱连接地址'smtp.邮箱名.com',第二个参数是端口号, 用QQ邮箱最稳妥,outlook微软的邮箱,不太会搞
email_connect.login('905414357@qq.com','授权码或者密码') # 利用第一步创建的连接名,去连接对象.login(账号,密码)。相当于在邮箱的页面登录你自己的账号。 QQ的密码就是授权码,其他的邮箱不太清楚
第二步:准备数据
# 创建邮件对象:from email.mime.multipart import MIMEMultipart 邮件的内容,邮件收件人,邮件的相关设置,包括发件人,接收人,标题等
send_content = MIMEMultipart() # 真正发出去的东西,包括头部的标题内容,头部的内容。代码的角度就是调用了MIMEMultipart的类,可以随意使用里面的方法
# 设置邮件主题 from email.header import Header 专门构建邮件标题的,这样做,可以支持标题中文
# 调用send_content的方法 来构建邮件的头部的内容
send_content['Subject'] = Header('测试邮件 '+str(datetime.date.today())+,'utf-8').encode() # 邮件的标题内容
send_content['From'] = '测试邮件 ' # 设置邮件发送人
send_content['To'] = 'HongYe_Fan@outlook.com' # 设置邮件接受人,如果是很多人,那么就是'邮箱1:邮箱2;邮箱3;.......邮箱n'
# from email.mime.text import MIMEText # 构建邮件内容信息
# 普通文本:MIMEText(文字内容,文本类型,编码方式)
# 文本类型 - plain(普通文件), html(超链接),base64(二进制文件)
# ========================文本内容========================
# text = MIMEText('林瑞敏','plain','utf-8')
# send_content.attach(text) # 与文本的内容相连接,就构成整个邮件的发生页面,以及发送内容
# ========================html内容========================
content = """
<img src='http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'>
<h1> 我是正文的大标题 </h1>
<h6> 我是正文的副标题 </h6>
<p> 我是邮件正文段落文字 </p>
<a href='https://www.baidu.com'>点击跳转</a>
""" # 在这个里面写html文字
html_text = MIMEText(content,'html','utf-8')
send_content.attach(html_text)
# ========================发送图片内容========================
# 发送图片内容,需要使用HTML内容来发送
#1.准备图片
image_data = open('本地的文件地址','rb').read()
image = MIMEImage(image_data)
image.add_header('Content-ID ','<img1>')
content = """
<p> 这是一条发送图片的的邮件
<img src= 'cid:img1'>
"""
html_text = MIMEText(content,'html','utf-8')
send_content.attach(html_text)
# ========================发送图片附件内容========================
# 图片附件内容,其实就是从本地读取图片,将图片内容转为二进制
image_data = open('文件的地址','rb').read()
image = MIMEImage(image_data)
image['Content-Disposition'] = 'attachment; filename ="名字内容"' # 设置附件名,注意名字不要用成中文
send_content.attach(image) # 添加到邮件内容当中去
========================发送文件附件内容========================
# 准备附件
content1 = open('文件的地址','rb').read()
file_content = MIMEText(content1,'base64','utf-8') # 必须写base64,这个是二进制的编码形式。
file_content['Content-Disposition'] = 'attachment; filename ="名字内容"' # 设置附件名,注意名字不要用成中文
send_content.attach(image) # 添加到邮件内容当中去
第三步:发送邮件
# 连接对象,sendmail
email_connect.sendmail('905414357@qq.com','905414357@qq.com',send_content.as_string()) # 发送人,收件人,以字符串的方法发送出去
email_connect.close() # 关闭邮箱