Python中基本郵件發送

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章