在這篇文章中,將介紹如何使用 exchangelib 和 BeautifulSoup 模組,從信箱中取得並格式化郵件內容,然後將其存入資料庫。假設你希望自動化處理來自信箱的求職相關信件,以下是具體的步驟與範例程式碼。
所需模組#
需要安裝兩個第三方模組:
- exchangelib:用來與 Exchange 伺服器交換資訊,以取得郵件。
- BeautifulSoup:用來解析郵件內容(HTML 格式),並提取所需的資料。
安裝這些模組:
pip install exchangelib
pip install bs4
使用情境#
假設你有一個信箱,並且當有新郵件進來時,你需要自動將郵件內容格式化並保存到資料庫中。以下是簡單的範例:
假設郵件內容大致如下,並且希望從中提取出求職者的個人資料並存入資料庫。
郵件格式範例(示意圖)#

資料格式#
將資料格式化為一個字典,其中包含了求職者的各項資料。以下是資料格式的範例:
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 來自動化處理郵件內容,並將提取出的資料存入資料庫。這對於需要從郵件中獲取特定信息(如求職信或其他商務郵件)並將其格式化處理的情境非常有用。
