安裝
pip install imapclient
使用案例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by LiTianYao on 2018/3/6
#
from imapclient import IMAPClient
from email.header import decode_header
class Imapmail(object):
def __init__(self): # 初始化數據
self.serveraddress = None
self.user = None
self.passwd = None
self.prot = None
self.ssl = None
self.timeout = None
self.savepath = None
self.server = None
def client(self): # 鏈接
try:
self.server = IMAPClient(self.serveraddress, self.prot, self.ssl, timeout=self.timeout)
return self.server
except BaseException as e:
return "ERROR: >>> " + str(e)
def login(self): # 認證
try:
self.server.login(self.user, self.passwd)
except BaseException as e:
return "ERROR: >>> " + str(e)
def getmaildir(self): # 獲取目錄列表 [((), b'/', 'INBOX'), ((b'\\Drafts',), b'/', '草稿箱'),]
dirlist = self.server.list_folders()
return dirlist
def getallmail(self): # 收取所有郵件
print(self.server)
self.server.select_folder('INBOX', readonly=True) # 選擇目錄 readonly=True 只讀,不修改,這里只選擇了 收件箱
result = self.server.search() # 獲取所有郵件總數目 [1,2,3,....]
print("郵件列表:", result)
for _sm in result:
# data = self.server.fetch(_sm, ['ENVELOPE'])
# size = self.server.fetch(_sm, ['RFC822.SIZE'])
# print("大小", size)
# envelope = data[_sm][b'ENVELOPE']
# print(envelope)
# subject = envelope.subject.decode()
# if subject:
# subject, de = decode_header(subject)[0]
# subject = subject if not de else subject.decode(de)
# dates = envelope.date
# print("主題", subject)
# print("時間", dates)
msgdict = self.server.fetch(_sm, ['BODY[]']) # 獲取郵件內容
mailbody = msgdict[_sm][b'BODY[]'] # 獲取郵件內容
with open(self.savepath + str(_sm), 'wb') as f: # 存放郵件內容
f.write(mailbody)
def close(self):
self.server.close()
if __name__ == "__main__":
imap = Imapmail()
imap.serveraddress = "imap.163.com" # 郵箱地址
imap.user = "xxx@163.com" # 郵箱密碼
imap.passwd = "xxxxx" # 郵箱賬號
imap.savepath = "" # 郵件存放路徑
imap.client()
imap.login()
imap.getallmail()
imap.close()