
辦公室自動化的終極應用,往往離不開兩件事:Email 與 PDF。 想像一下:自動讀取 Excel 名單,生成對應的 PDF 報表,然後自動寄給每個人。這就是自動化的威力!
1. 發送 Email (smtplib)
Python 內建的 smtplib 可以讓我們透過 SMTP 協定寄信。我們通常搭配 email.message 來建構信件內容。
注意:使用 Gmail 須申請「應用程式密碼 (App Password)」,不能直接用登入密碼。
import smtplib
from email.message import EmailMessage
EMAIL_ADDRESS = "your_email@gmail.com"
EMAIL_PASSWORD = "your_app_password"
msg = EmailMessage()
msg['Subject'] = "Python 自動發信測試"
msg['From'] = EMAIL_ADDRESS
msg['To'] = "receiver@example.com"
msg.set_content("這是純文字內容。")
# 加入 HTML 內容 (選用)
msg.add_alternative("""\
<!DOCTYPE html>
<html>
<body>
<h1 style="color:Blue;">這是一封 HTML 信件</h1>
<p>由 Python 自動發送!</p>
</body>
</html>
""", subtype='html')
# 加入附件 (選用)
with open('report.pdf', 'rb') as f:
file_data = f.read()
file_name = f.name
msg.add_attachment(file_data, maintype='application', subtype='pdf', filename=file_name)
# 寄送
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
smtp.send_message(msg)
print("信件已發送!")
如果是初學者,推薦使用第三方庫 yagmail,設定更簡單!
2. PDF 處理 (pypdf)
pypdf (舊名 PyPDF2) 是處理 PDF 的標準庫。常用功能:合併、拆分、加密、讀取文字。
安裝:pip install pypdf
讀取文字
from pypdf import PdfReader
reader = PdfReader("document.pdf")
page = reader.pages[0]
print(page.extract_text())
合併 PDF (Merge)
這是最實用的功能!把多份報告合而為一。
from pypdf import PdfWriter
merger = PdfWriter()
pdfs = ['cover.pdf', 'content.pdf', 'appendix.pdf']
for pdf in pdfs:
merger.append(pdf)
merger.write("final_report.pdf")
merger.close()
拆分 PDF (Split)
from pypdf import PdfReader, PdfWriter
reader = PdfReader("big_file.pdf")
# 將每一頁存成獨立檔案
for i, page in enumerate(reader.pages):
writer = PdfWriter()
writer.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as output_pdf:
writer.write(output_pdf)
3. 實戰整合:Excel -> PDF -> Email
結合前幾章的知識,你現在可以:
- 用 pandas/openpyxl 讀 Excel 名單。
- 用 reportlab (需另學) 或 Word 套版生成 PDF。
- 用 smtplib 將 PDF 寄給對應的人。
這就是價值百萬的自動化流程!
下一章,我們將學習如何製作一個能在 Discord 或 Line 群組自動回覆的 Chatbot (聊天機器人)!
延伸閱讀: