使用 zmail 模塊收發(fā)郵件
在前面小節(jié)中,我們已經(jīng)可以使用 Python 內置的 smtplib 與 email 模塊進行郵件內容的構建和各類型郵件內容的發(fā)送。但在使用上郵件內容構建的部分還是非常的繁瑣的。那有沒有更簡潔的方式來實現(xiàn)這一功能呢?答案肯定是有的,請看本節(jié)課要學習的 zmail 模塊。
1. zmail 模塊介紹
使用 zmail 模塊可以更加便捷的實現(xiàn)發(fā)送郵件、接收郵件功能,無需手動添加 - 服務器地址,端口,合適的協(xié)議等內容,zmail 都已經(jīng)完成了這些工作。
zmail 模塊 github 地址:https://github.com/ZYunH/zmail:
zmail 更多特性如下:
- 自動查找服務器地址及其端口;
- 自動使用合適的協(xié)議登錄;
- 自動將 Python 字典轉換為 MIME 對象(帶有附件);
- 自動添加郵件標題和本地名稱,以避免服務器拒絕您的郵件;
- 輕松自定義您的郵件標題;
- 支持 HTML 作為郵件內容。
Tips:zmail 僅在 python3 中運行,而無需第三方模塊。不支持 python2。
你可以使用 zmai 進行以下操作:
- 作為監(jiān)控腳本的發(fā)送郵件模塊,及時傳遞信息
- 嵌入到已有的項目中實現(xiàn)功能
- 自定義郵件發(fā)送過程,諸如準點發(fā)送、定時發(fā)送等
zmail 模塊支持的郵件服務器:
服務器地址 | 發(fā)郵件 | 找回郵件 | 備注 |
---|---|---|---|
@163.com | ? | ? | 需要應用專用密碼 |
@qq.com | ? | ? | POP3 需要應用專用密碼 |
@126.com | ? | ? | —— |
@yeah.com | ? | ? | —— |
@gamil.com | ? | ? | 需要應用專用密碼 |
@sina.com | ? | ? | —— |
@outlook.com | ? | ? | 需要應用專用密碼 |
@hotmail.com | ? | ? | 需要額外的設置 |
支持的企業(yè)郵件服務器:
名稱 | 用法 |
---|---|
騰訊企業(yè)郵箱 | zmail.server(‘username’,‘psw’,config=‘qq’) |
阿里企業(yè)郵箱 | zmail.server(‘username’,‘psw’,config=‘a(chǎn)li’) |
網(wǎng)易企業(yè)郵箱 | zmail.server(‘username’,‘psw’,config=‘163’) |
Google 企業(yè)郵件 | zmail.server(‘username’,‘psw’,config=‘google’) |
2. zmail 模塊使用
zmail 模塊是 Python 的第三方庫,使用前需要通過以下命令進行安裝:
pip install zmail
zmail 安裝完成后,使用之前請確保以下兩點:
- 使用的 Python3;
- 所使用的郵箱已開啟 SMTP / POP3 服務
zmail 使用步驟如下:
步驟 1:導入 zmail 模塊
import zmail
步驟 2:初始化郵件服務
server = zmail.server('xxxxx@qq.com', 'mdgxgiwpnkspbxgx')
步驟 3:發(fā)送或接收郵件
利用 zmail 模塊封裝好的方法,完成郵件發(fā)送或接收郵件操作。
3. 利用 zmail 模塊收發(fā)郵件
接下來一起來學習如何通過 zmail 進行發(fā)送郵件和接收郵件。
3.1 發(fā)送郵件
發(fā)送郵件如下代碼所示:
import zmail
mail = {
'subject': '你有一封新的郵件!',
'content_text': '測試內容!'
}
server = zmail.server('xxxxxx@qq.com', 'xlogucqphohxcabi')
server.send_mail("xxxxxx@163.com", mail)
代碼解釋:通過 zmail.server 構建與郵件服務器通信的 MailServer 對象,構建完成后,通過 send_mail () 方法發(fā)送郵件,第一個參數(shù)為接收郵件的郵箱,第二個參數(shù)為構建好的郵件內容。代碼執(zhí)行完成后,如下圖所示。
3.2 群發(fā)郵件
日常工作中,經(jīng)常遇到一種場景需要同時發(fā)給多名同事,并抄送給領導,此時可以使用 zmeil 實現(xiàn)群發(fā)郵件的功能,群發(fā)郵件代碼如下所示:
import zmail
mail = {
'subject': '會議通知',
'content_text': '周四上午9點來一層開會!'
}
server = zmail.server('xxxxxx@qq.com', 'xlogucqphohxcabi')
# 發(fā)送至收件人和抄送人
server.send_mail(['xxxxxx@qq.com','xxxxxx@163.com'],mail,cc=['xxxxxx@qq.com'])
代碼解釋:通過 zmail.server 構建與郵件服務器通信的 MailServer 對象,構建完成后,通過 send_mail () 方法發(fā)送郵件,第一個參數(shù)為接收郵件的郵箱,當需要群發(fā)時,這里設置為一個郵箱列表,第二個參數(shù)為構建好的郵件內容,第三個參數(shù)為要抄送的郵箱。代碼執(zhí)行完成后,如下圖所示。
3.3 接收郵件
接收郵件如下代碼所示:
import zmail
server = zmail.server('xxxxxx@qq.com', 'xlogucqphohxcabi')
latest_mail = server.get_latest()
# zmail.show(latest_mail)
print(latest_mail["id"])
print(latest_mail["from"])
print(latest_mail["to"])
print(latest_mail["subject"])
代碼解釋:通過 get_latest () 方法獲取最新一封郵件,分別打印郵件 ID、發(fā)件人、收件人、郵件標題。當前郵箱郵件如下圖所示。
代碼執(zhí)行完,輸出結果如下圖所示。
4. 小結
本節(jié)課程我們主要學習了 zmail 模塊介紹與安裝。本節(jié)課程的重點如下:
- 了解 zmail 模塊的作用;
- 掌握 zmail 模塊使用步驟;
- 掌握 zmail 模塊下郵件發(fā)送和接收最新郵件的使用