快轉到主要內容
  1. Posts/

使用 exchangelib 和 BeautifulSoup 自動化處理郵件

Python Automation Exchangelib BeautifulSoup Python Automation Database
目錄

在這篇文章中,將介紹如何使用 exchangelib 和 BeautifulSoup 模組,從信箱中取得並格式化郵件內容,然後將其存入資料庫。假設你希望自動化處理來自信箱的求職相關信件,以下是具體的步驟與範例程式碼。

所需模組
#

需要安裝兩個第三方模組:

  1. exchangelib:用來與 Exchange 伺服器交換資訊,以取得郵件。
  2. BeautifulSoup:用來解析郵件內容(HTML 格式),並提取所需的資料。

安裝這些模組:

pip install exchangelib
pip install bs4

使用情境
#

假設你有一個信箱,並且當有新郵件進來時,你需要自動將郵件內容格式化並保存到資料庫中。以下是簡單的範例:

假設郵件內容大致如下,並且希望從中提取出求職者的個人資料並存入資料庫。

郵件格式範例(示意圖)
#

Image

資料格式
#

將資料格式化為一個字典,其中包含了求職者的各項資料。以下是資料格式的範例:

personal_data={
        'recruit':'',
        'find_job':'',
        'name':'',
        'age':'',
        'gender':'',
        'highest_education' : '' ,
        'want_job_name' :'' ,
        'work_experience' : '',
        'recent_work' : '',
        'address' : '',
        'email' : '',
        'cellphone' : '',
        'contact_method' : '',
        'resume_file':'',
        'Time':'',
        'ID':'',
        'creation_time':''
    }

設定 config.py
#

在 config.py 中設定郵件帳號和伺服器的資訊,這樣才能成功連接 Exchange 伺服器。

# define email account
username = ''
password = ''
primary_smtp_address = '' # example@xxx.con.tw
server = '' #mail.xxx.com.tw

登入 Exchange 伺服器
#

使用 exchangelib 進行 Exchange 登入,首先需要設定認證與伺服器資訊。


credentials = Credentials(username= username,  password=password)
version = Version(build=Build(15, 0, 12, 34))
config = Configuration(server=server, credentials=credentials,version = version, auth_type=NTLM)

self.account = Account(primary_smtp_address=primary_smtp_address,config=config, credentials=credentials, autodiscover=False,access_type=DELEGATE )

ews_url = self.account.protocol.service_endpoint
ews_auth_type = self.account.protocol.auth_type

config = Configuration(service_endpoint=ews_url, credentials=credentials, auth_type=ews_auth_type)
account = Account(
    primary_smtp_address=primary_smtp_address,
    config=config, autodiscover=False,
    access_type=DELEGATE,
)

處理郵件並解析資料
#

在成功登入信箱後,我們可以提取郵件內容,並使用 BeautifulSoup 解析 HTML 格式的內容,從中提取出有用的資料。

from bs4 import BeautifulSoup

def process_email(mail):
    # 解析郵件內容
    soup = BeautifulSoup(mail.body, 'html.parser')

    # 假設從郵件中提取求職者資料
    personal_data = {
        'name': soup.find('div', {'class': 'name'}).get_text(),
        'age': soup.find('div', {'class': 'age'}).get_text(),
        'email': soup.find('div', {'class': 'email'}).get_text(),
        # 添加其他資料...
    }

    return personal_data

結語
#

這篇文章介紹了如何使用 exchangelib 和 BeautifulSoup 來自動化處理郵件內容,並將提取出的資料存入資料庫。這對於需要從郵件中獲取特定信息(如求職信或其他商務郵件)並將其格式化處理的情境非常有用。

Ernie
作者
Ernie

相關文章

Flask應用程式中的Celery與Flower:高效處理異步任務
Python Flask Celery Flask Celery Flower Redis Python
學習如何在Flask應用程式中使用Celery處理異步任務,並使用Flower監控任務狀態。
GitHub Webhook 自動化程式碼部署教學
DevOps GitHub Python Flask GitHub Webhook 自動化 部署 Python Flask Git SSH
設定 GitHub Webhook 自動拉取最新程式碼並部署到伺服器。
Python 虛擬環境設定:使用 virtualenv 與 VSCode
Python 開發環境 Python Virtualenv VSCode 虛擬環境 開發環境 套件管理 Pip
使用 virtualenv 與 VSCode 建立 Python 虛擬環境,提升開發效率。