# 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()