python imap 接收郵件 --- imapclient 使用記錄 一

安裝

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()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。