python發郵件需要掌握兩個模組的用法,smtplib和email,這倆模組是python自帶的,只需import即可使用。smtplib模組主要負責傳送郵件,email模組主要負責構造郵件。
1. 基本流程如下:
1 #coding=utf-8
2 importsmtplib3 from email.mime.text importmimetext4 from email.header importheader5
6 defsend_email(smtp_host, from_account, from_password, to_account, subject, content):7 #1. 例項化smtp
8 smtp =smtplib.smtp()9
10 #2. 鏈結郵件伺服器
11 smtp.connect(smtp_host)12
13 #3. 配置傳送郵箱的使用者名稱和密碼
14 smtp.login(from_account, from_password)15
16 #4. 配置傳送內容msg
17 msg = mimetext(content, 'plain', 'utf-8')18 msg['subject'] = header(subject,'utf-8')19 msg['from'] =from_account20 msg['to'] =to_account21
22 #5. 配置傳送郵箱,接受郵箱,以及傳送內容
23 smtp.sendmail(from_account, to_account, msg.as_string())24
25 #6. 關閉郵件服務
26 smtp.quit()27
28 if __name__ == '__main__':29 send_email("smtp.163.com", "from_account", "from_pssword","to_account", "i want to talk to u", "in this semester")
2. smtplib模組
smtplib.smtp():例項化smtp()
connect(host,port):
port:指定連線伺服器的埠號,預設為0.
login(user,password):
user:登入郵箱的使用者名稱。
password:登入郵箱的密碼
sendmail(from_addr,to_addrs,msg,...):
from_addr:郵件傳送者位址
to_addrs:郵件接收者位址。字串列表['接收位址1','接收位址2','接收位址3',...]或'接收位址'
msg:傳送訊息:郵件內容。一般是msg.as_string():as_string()是將msg(mimetext物件或者mimemultipart物件)變為str。
quit():用於結束smtp會話。
3. email模組
email模組下有mime包,mime英文全稱為「multipurpose internet mail extensions」,即多用途網際網路郵件擴充套件,是目前網際網路電子郵件普遍遵循的郵件技術規範。
該mime包下常用的有三個模組:text,image,multpart。
3.1 匯入方法:
1 from email.mime.multipart importmimemultipart2 from email.mime.text importmimetext3 from email.mime.image import mimeimage
其中:構造乙個郵件物件就是乙個message物件
如果構造乙個mimetext物件,就表示乙個文字郵件物件
要把多個物件組合起來,就用mimemultipart物件
而mimebase可以表示任何物件。它們的繼承關係如下:
message
+- mimebase
+- mimemultipart
+- mimenonmultipart
+- mimemessage
+- mimetext
+- mimeimage
3.2 傳送文字郵件
郵件傳送程式為了防止有些郵件閱讀軟體不能顯示處理html格式的資料,通常都會用兩型別分別為"text/plain"和"text/html"(如果傳送內容為中文,需要選擇「plain」,要不然無法顯示)
構造mimetext物件時,第乙個引數是郵件正文,第二個引數是mime的subtype,最後一定要用utf-8編碼保證多語言相容性。
3.2.1 新增普通檔案
3.2.2 新增超文字
1 html = """
2 3
4 5 here is the link you wanted.6
7 8 9 """
10 msg = mimetext(html,'html', 'utf-8')
3.2.3新增附件
4 msg['content-disposition'] = 'attachment;filename= "檔案顯示名字.txt"'
3.2.4 新增
1 sendimagefile=open(r'd:\pythontest\testimage.png','rb').read()2 msg =mimeimage(sendimagefile)3 msg.add_header('content-id','')
4. 自動傳送測試報告的郵件
1 defsend_report():2 #一、獲取最新的報告
3 #1. 獲取report目錄下的所有檔案,結果以列表形式返回
4 case_list =os.listdir(report_dir)5 #2. 對case_list中所有元素按時間從大到小排序
6 case_list.sort(key=lambda fn: os.path.getmtime(report_dir + "\\" +fn)7 if not os.path.isdir(report_dir + "\\" + fn) else0)8 #3. 獲取最新報告的絕對路徑
9 print("the latest report:" + case_list[-1])10 latest_report = os.path.join(report_dir, case_list[-1])11 print(latest_report)12
13 #二、傳送郵件
14 send_email("smtp.163.com", "xx", "xx","xx", "消費者登入測試報告", latest_report)
python 自動群發郵件
生活中我們經常傳送郵件,那麼我們能不能用python寫乙個自動傳送郵件的功能呢?答案是肯定的!開始實現功能之前我們需要開啟我們郵箱的 imap smtp功能,我們先了解一下什麼是imap smtp。smtp的全稱是 mail transfer protocol 即簡單郵件傳輸協議。它是一組用於從源位...
Python群發郵件 練習
我的python 學習筆記,練習題 在輸入乙個收件郵箱結束後,彈出輸入框詢問使用者是否需要繼續輸入郵箱,如果需要輸入收件郵箱,按其他按鍵繼續 如果不再需要輸入收件郵箱,那直接按n退出,開始傳送郵件。from email import encoders encoders 編碼器 from email....
用Python實現群發郵件
用python實現 郵件 要實現用python 郵件功能,需要用到 email 和 smtplib 這兩個模組.前者用來構建郵件內容 後者用來傳送郵件 匯入模組 import smtplib from email.mime.text import mimetext 定義變數 發件人資訊 發件郵箱,q...