GitHub地址: github.com/ZYunH/zmail
覺得對你有用請Star或者Fork!
介紹
Zmail 允許你傳送和接受郵件儘可能的簡單。你不需要去檢查你的伺服器地址、埠以及自己構造MIME物件,使用Zmail,你只需要關注你的郵件內容即可。
安裝
Zmail僅支援python3,不需要任何其他外部依賴. 不支援python2.
選項一:通過pip安裝(推薦)
$ pip3 install zmail
複製程式碼
或者
$ pip install zmail
複製程式碼
這樣做也意味著此pip版本是支援python3的。
選項二: 從GitHub下載安裝
你可以下載Zmail的master分支,將其解壓,切換到相應目錄,然後
$ python3 setup.py install
複製程式碼
特性
- 自動尋找伺服器地址以及埠
- 自動使用可靠的連結協議
- 自動將一個python字典對映成MIME物件(帶有附件的)
- 自動新增標頭檔案以及localhostname來避免伺服器拒收你的郵件
- 輕鬆自定義你的標頭檔案
- 支援使用HTML作為郵件內容
- 僅需python>=3.5,你可以將其嵌入你的專案而無需其他的依賴
使用須知
使用它之前,請保證
- 使用Python3
- 確保開啟了郵箱的POP3和SMTP功能 (對於 @163.com 和 @gmail.com 你需要設定你的應用專用密碼)
然後,剩下你需要做的就是import zmail即可
使用示例
傳送你的郵件
import zmail
mail = {
'subject': 'Success!', # Anything you want.
'content': 'This message from zmail!', # Anything you want.
'attachments': '/Users/zyh/Documents/example.zip', # Absolute path will be better.
}
server = zmail.server('yourmail@example.com’, 'yourpassword')
server.send_mail('yourfriend@example.com', mail)
複製程式碼
-
給一個列表的收件人發件
server.send_mail(['yourfriend@example.com','12345@example.com'], mail)
複製程式碼
-
傳送HTML作為郵件內容
mail = {
'subject': 'Success!', # Anything you want.
'content_html': zmail.get_html('/Users/example.html'), # Absolute path will be better.
'attachments': '/Users/zyh/Documents/example.zip', # Absolute path will be better.
}
server.send_mail('yourfriend@example.com',mail)
複製程式碼
或者
with open('/Users/example.html','r') as f:
content_html = f.read()
mail = {
'subject': 'Success!', # Anything you want.
'content_html': content_html,
'attachments': '/Users/zyh/Documents/example.zip', # Absolute path will be better.
}
server.send_mail('yourfriend@example.com',mail)
複製程式碼
取回你的郵件
-
取得最新的郵件
import zmail
server = zmail.server('yourmail@example.com', 'yourpassword')
mail = server.get_latest()
複製程式碼
-
依據id取回郵件
mail = server.get_mail(2)
複製程式碼
-
依據 (subject,after,before,sender)取回一個列表的郵件
mail = server.get_mails(subject='GitHub',after='2018-1-1',sender='github')
複製程式碼
示例中, 如果 'GitHub' 在郵件的主題中,這封郵件將會被匹配, 例如' [GitHub] Your password has changed'
sender亦是如此
-
得到所有郵件的標頭檔案資訊.一個由字典組成的列表,每個字典包含了所有能夠提取的標頭檔案.
mail_info = server.get_info()
複製程式碼
-
得到郵箱的資訊
mailbox_info = server.stat()
複製程式碼
結果為包含兩個整型的元組: (郵件的數量, 郵箱的大小)
.
解析你的郵件
在zmail中,接收到的郵件被對映為一個字典,你可以通過訪問python字典的形式來訪問你的郵件,例如
subject = mail['subject']
複製程式碼
展示你的郵件,使用 zmail.show()
import zmail
server = zmail.server('yourmail@example.com‘, 'yourpassword')
mail = server.get_latest()
zmail.show(mail)
複製程式碼
輸出 :
content-type multipart/mixed
subject Success!
to zmail_user
from zmail<zmail@126.com>
date 2018-2-3 01:42:29 +0800
boundary ===============9196441298519098157==
content ['This message from zmail!']
contents [[b'Content-Type: text/plain; charset="utf-8"', b'MIME-Version: 1.0', b'Content-Transfer-Encoding: base64', b'', b'VGhpcyBtZXNzYWdlIGZyb20gem1haWwh', b'']]
attachments None
id 5
複製程式碼
郵件的結構
- content-type: 郵件內容的型別
- subject: 郵件主題
- to:收件人
- from:寄件人
- date: 年-月-日 時間 時區
- boundary: 如果郵件為multiple parts,你可以得到其分界線
- content: 郵件的文字內容(僅在text/plain時可以被解析)
- contents: 郵件的body,裡面包含著由分界線分割的每一個段落
- attachments: None 或者 [['附件名稱;編碼方式','附件的二進位制內容']...]
- id: 在郵箱中的id
獲得附件
import zmail
server = zmail.server('yourmail@example.com‘, 'yourpassword')
mail = server.get_latest()
zmail.get_attachment(mail)
複製程式碼
你可以重新命名你的附件,使用
zmail.get_attachment(mail,'example.zip')
複製程式碼
支援的郵件服務商
列表中的郵件服務商已經被測試可正常使用
如果你的郵箱不在此列,請不要擔心,目前尚未發現不支援的郵箱.如果你發現任何問題,請在GitHub上告知於我
服務商地址 | 傳送郵件 | 取回郵件 | 備註 |
---|---|---|---|
@163.com | ✓ | ✓ | 需要應用專用密碼 |
@qq.com | ✓ | ✓ | POP3 需要應用專用密碼 |
@126.com | ✓ | ✓ | |
@yeah.net | ✓ | ✓ | |
@gmail.com | ✓ | ✓ | 需要應用專用密碼 |
@sina.com | ✓ | ✓ | |
@outlook | ✓ | ✓ |
API
server = zmail.server('user@example','password')
SMTP
- server.send_mail([recipient,], mail)
POP3
- server.get_mail(which)
- server.get_mails(subject, sender, after, before)
- server.get_latest()
- server.get_info()
- server.stat()
Parse mail
- server.get_attachment(mail)
- subject
- content
- content_html
- from
- to
Other
- zmail.show()