如何批量下載BOSS直聘候選人發往郵箱的簡歷附件

雖然是用在接收BOSS直聘郵件的,但也可以改爲其他郵箱,不過解析需要自己修改

import imaplib
import email
import os
import base64
from email.header import decode_header
import re
# 郵箱信息
email_user = ''
email_pass = ''

# 連接到IMAP服務器
imap_server = 'imap.xxx'  # 請替換成你的郵箱提供商的IMAP服務器地址
imap = imaplib.IMAP4_SSL(imap_server)

# 登錄到郵箱
imap.login(email_user, email_pass)

# 選擇郵箱文件夾(如收件箱)
folder = 'INBOX'  # 可以根據需要更改爲其他文件夾
imap.select(folder)

# 設置搜索條件(日期和發件人)
search_criteria = '(FROM "[email protected]" SINCE "14-SEP-2023")'

# 搜索匹配的郵件
status, email_ids = imap.search(None, search_criteria)

# 遍歷匹配的郵件
for email_id in email_ids[0].split():
    # 獲取郵件
    status, email_data = imap.fetch(email_id, '(RFC822)')
    raw_email = email_data[0][1]

    # 解析郵件
    msg = email.message_from_bytes(raw_email)
    
    # 遍歷附件
    for part in msg.walk():
        if part.get_content_maintype() == 'multipart':
            continue
        if part.get('Content-Disposition') is None:
            continue

        # 獲取附件名稱並解碼
        filename = part.get_filename()
        if filename:
            filename, encoding = decode_header(filename)[0]
            if isinstance(filename, bytes):
                filename = filename.decode(encoding or 'utf-8')

            # 處理Base64編碼的附件內容
            file_data = part.get_payload(decode=True)
            file_data_decoded = base64.b64decode(file_data)
            filename = filename[1:]           # 保存附件
            filename = "".join(x for x in filename if x.isalnum() or x in ["-", "_", "."])
            # 解碼 Base64 編碼的附件內容
              # 解碼 Base64 編碼的附件內容
            payload = part.get_payload(decode=True)
            try:
                payload_decoded = payload.decode('utf-8')
            except UnicodeDecodeError:
                payload_decoded = payload

            # 保存附件到 D 盤的 A 文件夾下
            file_path = os.path.join('D:\\A\\', filename)  # 替換爲你想保存附件的文件夾路徑
            with open(file_path, 'wb') as file:
                file.write(payload_decoded)

# 關閉連接
imap.logout()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章