社内で日々の定型メール送信や添付ファイル管理に時間を取られていませんか?
PythonとOutlookを組み合わせれば、メールの自動送信や添付ファイルの自動保存を簡単に実現できます。本記事では、初心者でも理解できる手順で解説します。
目次
- PythonからOutlookを操作する準備
- Outlookでメールを自動送信する方法
- 添付ファイルを自動で保存する方法
- 実務で使える自動化例
- 注意点とセキュリティ対策
1. PythonからOutlookを操作する準備
PythonでOutlookを操作するには、win32com.client
ライブラリを使用します。
まずはライブラリをインストールしましょう。
pip install pywin32
Windows環境でOutlookがインストールされていることが前提です。
2. Outlookでメールを自動送信する方法
2-1. 基本的な送信スクリプト
import win32com.client as win32
# Outlookを起動
outlook = win32.Dispatch('Outlook.Application')
mail = outlook.CreateItem(0) # 0 = メールアイテム
# メール情報を設定
mail.To = 'example@company.com'
mail.CC = 'cc@company.com'
mail.Subject = '定例レポート'
mail.Body = 'お疲れ様です。本日のレポートをお送りします。'
# 添付ファイルを追加
mail.Attachments.Add(r'C:\Users\username\Documents\report.xlsx')
# 送信
mail.Send()
print("メールを送信しました。")
これで、指定した宛先に自動でメールを送信できます。
3. 添付ファイルを自動で保存する方法
受信トレイのメールから添付ファイルを保存することも可能です。
import os
import win32com.client as win32
# 保存先フォルダ
save_path = r"C:\Users\username\Documents\Attachments"
os.makedirs(save_path, exist_ok=True)
# Outlookの受信トレイを取得
outlook = win32.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6) # 6 = 受信トレイ
# 最新10件のメールを取得
messages = inbox.Items
messages.Sort("[ReceivedTime]", True) # 新着順
for message in list(messages)[:10]:
if message.Attachments.Count > 0:
for attachment in message.Attachments:
attachment.SaveAsFile(os.path.join(save_path, attachment.FileName))
print(f"{attachment.FileName} を保存しました。")
4. 実務で使える自動化例
- 毎朝9時に前日の売上レポートを自動送信
- 特定キーワードのメールを受信したら自動で添付資料を保存
- チームメンバーに定期的に進捗報告を送信
PythonのスクリプトをWindowsタスクスケジューラと組み合わせることで、完全自動化も可能です。
5. 注意点とセキュリティ対策
- 自動送信は誤送信のリスクがあるため、テスト環境で確認してから本番運用
- 添付ファイルの保存パスやファイル名は安全な場所に設定
- Outlookのセキュリティ警告が表示される場合があります。必要に応じて管理者権限やセキュリティ設定を確認
まとめ
PythonとOutlookを組み合わせれば、社内メールの送信や添付ファイル管理を大幅に効率化できます。
定型業務を自動化することで、業務時間を削減し、本来の重要な業務に集中できるようになります。