Python × Outlookで社内メールを自動送信&添付ファイルを自動保存する方法

社内で日々の定型メール送信や添付ファイル管理に時間を取られていませんか?
PythonとOutlookを組み合わせれば、メールの自動送信や添付ファイルの自動保存を簡単に実現できます。本記事では、初心者でも理解できる手順で解説します。


目次

  1. PythonからOutlookを操作する準備
  2. Outlookでメールを自動送信する方法
  3. 添付ファイルを自動で保存する方法
  4. 実務で使える自動化例
  5. 注意点とセキュリティ対策

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を組み合わせれば、社内メールの送信や添付ファイル管理を大幅に効率化できます。
定型業務を自動化することで、業務時間を削減し、本来の重要な業務に集中できるようになります。

タイトルとURLをコピーしました