python自動群發郵件 python自動傳送郵件

2021-10-11 19:34:53 字數 3338 閱讀 7348

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...