# smtp = simple mail transfer protocol 简单邮件传输协议
# lib =library
import smtplib
import email # 因为要使用此模块,so当前文件名不能写成email.py
from email.mime.text import MIMEText # MIME 多用于邮件扩充协议
from email.mime.multipart import MIMEMultipart
HOST = 'smtp.qq.com' # 由qq发出
SUBJECT = '今天是2018年8月10日'
FROM = 'qq邮箱'
# 设置收件人的邮箱 可以一次性发送给多个人
TO = '接收人邮箱'
# related 表示使用内嵌资源的形式, 将邮件发送给对方
message = MIMEMulipart('related')
#-↓-------↓-----↓--------↓--------↓-------发送文本-----------↓-------↓-------↓-----
#发送邮件主题到对方的邮箱中
# 三个参数:
# 1.发送的内容 内容必须是字符串
# 2.内容的类型 存文本类型默认为plain
# 3.内容的编码方式 使用utf-8 进行编码
# message_html = MIMEText('今天是星期五,好开心','plain','utf-8')
message_html = MIMEText('<h2 style="color:red;font-size:100px">工作使我快乐</h2><img src="cid:small">,'html','utf-8')
message.attach(message_html)
#------------------------------------发送图片------------------------------------
# rb 读取二进制文件
image_data = open('tupian.jpg','rb')
#设置读取获取的二进制数据
message_image = MIMEImage(image_data.read())
# 关闭刚才打开的文件夹
image_data.close()
message_image.add_header('Content-ID','small') #此处small与 上面cid:small 对应
# 添加图片文件 到邮件信息当中去
message.attch(message_image)
在发送图片之前 先将图片放入此文件同级文件夹内
并在此文件夹内新建一个xlsx表
#------------------------ 发送图片的第二种方式----------------------------------
message_image = MIMEText(open('hahaha.jpg','rb').read(),'base64','utf-8')
message_image['Content-disposition'] = 'attachment;filename="happy.jpg"'
message.attch(message_image)
#------------------------------添加文件--------------------------------------
# 读取excel文件时,时以rb形式进行读取的,是一个二进制内容,对二进制文件需要设置默认的编码方式
# 对于MIMEText()来说 默认的编码方式就是base64
# 如果对于二进制文件来说 没有放置base64进行编码 则附件就会出现乱码
message_xlsx = MIMEText(open('table.xlsx','rb').read(),'base64','utf-8')
# 设置文件在附件当中的名字
message_xlsx = ['Content-Disposition'] = 'attchment;filename=text11.xlsx'
message.attach(message_xlsx)
# 设置文件发件人
message['From'] = FROM
# 设置文件收件人
message['To'] = TO
# 设置邮件标题
message['Subject'] = SUBJECT
# 获取简单邮件传输协议的证书
email_client = smtplib.SMTP_SSL
# 设置发件人邮箱的域名和端口 端口是465
email_client.connect(HOST,'465')
# 注意!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# 密码千万不要写邮箱的密码 要写邮箱的授权码
result = email_client.login(FROM,'xxx授权码xxx')
print('登录结果',result)
# address 地址
#----------------------------------发送邮件--------------------------------------
# message = MIMEMultipart('related') message 为MIMEMultipart的一个对象
# msg 后面的结果必须是一个字符串 as_string 将整个对象转成字符串
email_client.sendmail(from_addr=FROM,to_addrs=TO.split(','),msg=message.as_string())
# 关闭邮件发送客户端
email_clint.close()