天天看點

每天工作忙,學會python自動收發郵件,代替你問候女友

如果覺得文章寫得好,如果你想要部落格文章中的資料,請關注公衆号:【資料分析與統計學之美】,進群和作者交流!

目錄

  ​​1、相關庫介紹​​​     ​​​​

​​1)yagmail​​​     

​​2)keyring​​​     

​​3)schedule​​​     ​​​​

​​4)imbox​​​   

​​2、利用python發送郵件​​​     ​​​​

​​1)郵件相關基礎知識​​​     

​​2)python發送郵件流程(以“QQ郵箱”為例,進行說明)​​​        

 ​​① 注冊一個QQ郵箱,開通POP3/SMTP/IMAP​​​         ​​​​

​​② 找到SMTP和IMAP伺服器的位址​​​         

​​③ 發送郵件之前,先使用yagmail存儲你的郵件位址和密碼​​​        

 ​​④ 發送第一封測試郵件​​​         

​​⑤ 發送帶HTML樣式的郵件​​​       

  ​​⑥ 發送帶附件的郵件​​​         

​​⑦ 發送帶嵌入圖檔的郵件​​​         

​​⑧ 群發郵件​​​         ​​​​

​​⑨ 定時發送郵件​​​   

​​3、利用python讀取郵件​​

1、相關庫介紹

1)yagmail
  • Yet Another GMAIL/SMTP client;
  • 非常友善的SMTP包,超簡單的Python發郵件子產品;
  • 需要單獨安裝,不包含在Python标準子產品裡;
  • ​​yagmail官網連結​​
2)keyring
  • 從Python通路系統密鑰環服務(即密碼不用直接寫在代碼裡);
  • 友善、安全地儲存你的密碼;
  • 需要單獨安裝,不包含在Python标準子產品裡;
  • ​​keyring官網連結​​
3)schedule
  • 超容易了解的定時任務執行器;
  • 需要單獨安裝,不包含在Python标準子產品裡;
  • ​​schedule官網連結​​
4)imbox
  • 簡易的Python IMAP包;
  • 進行IMAP相關的操作;
  • 需要單獨安裝,不包含在Python标準子產品裡;
  • ​​imbox官網連結​​
5)上述庫安裝
pip install yagmail keyring schedule imbox      

2、利用python發送郵件

1)郵件相關基礎知識
  • POP3:Post Office Protocol3的簡稱,即郵局協定的第3個版本,它規定怎樣将個人計算機連接配接到Internet的郵件伺服器和下載下傳電子郵件的電子協定。
  • SMTP:Simple Mail Transfer Protocol,即簡單郵件傳輸協定。
  • IMAP:Internet Mail Access Protocol,即互動式郵件存取協定,它是跟POP3類似郵件通路标準協定之一。
  • 注意:寫代碼發郵件時一定要注意不能頻繁發送!容易被當做垃圾郵件被屏蔽!!
2)python發送郵件流程(以“QQ郵箱”為例,進行說明)

① 注冊一個QQ郵箱,開通POP3/SMTP/IMAP

  • 具體步驟參考如下連結:​​http://xinzhi.wenda.so.com/a/1523533253610174​​

點選設定–》賬戶–》開啟如下服務

注意:開啟過程中,需要發送短信驗證,此時會出現一個第三方密碼,這個第三方密碼在使用第三方軟體登陸的時候,用該密碼代替你的扣扣登陸密碼。

每天工作忙,學會python自動收發郵件,代替你問候女友

② 找到SMTP和IMAP伺服器的位址

每天工作忙,學會python自動收發郵件,代替你問候女友

③ 發送郵件之前,先使用yagmail存儲你的郵件位址和密碼

每天工作忙,學會python自動收發郵件,代替你問候女友

注意:這兩行代碼,是用于存儲你的郵件位址和密碼,當你執行這行代碼後。你後面發送郵件的時候,就隻需要顯示給出你賬号即可,而不用再把密碼顯示出來。

④ 發送第一封測試郵件

import yagmail
# 這裡的user填寫的是你的扣扣郵箱賬号,可以看出這裡并沒有寫我們的“密碼”
yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")

contents = ["這是第一段正文内容","這是第二段正文内容"]
# 這裡填寫的是你要發送的人的扣扣郵箱
yag.send("××××××××××@qq.com","這是一封郵件",contents)
"""
特别備注一下:這裡可以看到,我們發送郵件的時候,此時就沒有顯示給出密碼了。
這樣做相對來說較為安全,這就是yagmail庫的好處。
"""      

結果如下:

每天工作忙,學會python自動收發郵件,代替你問候女友

⑤ 發送帶HTML樣式的郵件

import yagmail

yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")

contents = ['這是第一段正文内容',
            '這是第二段正文内容',
            '<a href="https://www.baidu.com">百度網站</a>']

yag.send("××××××××××@qq.com","這是一封郵件",contents)      

結果如下:

每天工作忙,學會python自動收發郵件,代替你問候女友

⑥ 發送帶附件的郵件

import yagmail

yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")

contents = ['這是第一段正文内容',
            '這是第二段正文内容',
            '<a href="https://www.baidu.com">百度網站</a>',
            'G:\\6Tipdm\\7python辦公自動化\\我建立的壓縮包.zip']

yag.send("××××××××××@qq.com","這是一封郵件",contents)      

結果如下:

每天工作忙,學會python自動收發郵件,代替你問候女友

⑦ 發送帶嵌入圖檔的郵件

import yagmail

yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")

contents = ['親愛的××老婆',
            '我愛你',
            yagmail.inline('G:\\6Tipdm\\7python辦公自動化\\老婆.png')]

yag.send("××××××××××@qq.com","這是一封郵件",contents)      

⑧ 群發郵件

import yagmail

yag = yagmail.SMTP(user="[email protected]",host="smtp.qq.com")

contents = ['這是第一段正文内容',
            '這是第二段正文内容',
            '<a href="https://www.baidu.com">百度網站</a>',
            'G:\\6Tipdm\\7python辦公自動化\\我建立的壓縮包.zip']

# 定義一個收件人清單
shoujian_ren = ["×1×@qq.com","×2×@qq.com","×3×@qq.com"]
yag.send(shoujian_ren,"這是一封郵件",contents)      

⑨ 定時發送郵件

利用這個功能,你可以定時給你女朋友發送郵件,表達你的關心,以免自給由于工作忙,而忽略了自己的女朋友。

import time
import schedule
import yagmail
import datetime

def morning():
    content = ["親愛的,記得吃早飯哦!"]
    yag = yagmail.SMTP(user="[email protected]",host="smtp.qq.com")
    yag.send("[email protected]","這是一封郵件",content)
def afternoon():
    content = ["親愛的,記得吃中飯哦!"]
    yag = yagmail.SMTP(user="[email protected]",host="smtp.qq.com")
    yag.send("[email protected]","這是一封郵件",content)
def evering():
    content = ["親愛的,記得吃晚飯哦!"]
    yag = yagmail.SMTP(user="[email protected]",host="smtp.qq.com")
    yag.send("[email protected]","這是一封郵件",content)

schedule.every().day.at("07:30").do(morning)
schedule.every().day.at("11:30").do(afternoon)
schedule.every().day.at("17:30").do(evering)

while True:
    # 當代碼完成了這一天的任務以後,自動結束任務
    if datetime.datetime.now().strftime("%H:%M") == "17:31":
        break
    schedule.run_pending()
    time.sleep(1)
"""
# 每十分鐘,執行一次任務
schedule.every(10).minutes.do(job)
# 每小時,執行一次任務
schedule.every().hour.do(job)
# 每天上午十點半,執行一次任務
schedule.every().day.at("10:30").do(job)
# 每5-10鐘,執行一次任務
schedule.every(5).to(10).minutes.do(job)
# 每周一,執行一次任務
schedule.every().monday.do(job)
# 每周三下午一點十五分,執行一次任務
schedule.every().wednesday.at("13:15").do(job)
# 每分鐘的第十七秒,執行一次任務
schedule.every().minute.at(":17").do(job)
"""      

3、利用python讀取郵件

每天工作忙,學會python自動收發郵件,代替你問候女友

代碼如下:

from imbox import Imbox
import keyring
# "[email protected]"是你的郵箱賬号
pwd = keyring.get_password("yagmail", "[email protected]")
# "imap.qq.com"是你的IMAP郵箱伺服器位址
with Imbox("imap.qq.com","[email protected]",pwd,ssl=True) as imbox:
    all_inbox_messages = imbox.messages()
    for uid, message in all_inbox_messages:
        print(message.subject)
        print(message.body["plain"])      

如何讀取未讀郵件,隻需要添加一個參數:

每天工作忙,學會python自動收發郵件,代替你問候女友

如果隻想看紅旗标記的郵件,應該怎麼辦:

每天工作忙,學會python自動收發郵件,代替你問候女友

如果隻想看來自某個人的郵件,應該怎麼做:

每天工作忙,學會python自動收發郵件,代替你問候女友

如何按照日期篩選郵件:

每天工作忙,學會python自動收發郵件,代替你問候女友