「毎日の定型メール、面倒だな…」
「システムのアラートを自動でメール通知したい!」
そんな風に思ったことはありませんか?

メール業務ってどんなお仕事でもありますよね!
外部への連絡から日報、社内の提携報告まで面倒なことが多いです!

わかります~!!
それではPythonを用いてメール業務を自動化してみるのはどうでしょう?
実は、プログラミング言語Pythonを使えば、あなたが普段使っているMicrosoft Outlookのメール送信を驚くほど簡単に自動化できるんです。
この記事では、たった数行のコードでOutlookメールを自動送信する方法から、ファイル添付や受信メールの整理といった応用テクニックまで、初心者にも分かりやすく解説します。
なぜPythonでOutlookを操作するの?
通常、プログラムからメールを送信するには、SMTPサーバーという専門的な設定が必要で、少しハードルが高いと感じる方もいるかもしれません。
しかし、今回紹介する方法なら、
- 面倒なサーバー設定は一切不要!
- 普段使っているOutlookのアカウントをそのまま使える!
- 驚くほど短いコードで実現できる!
という大きなメリットがあります。
Pythonがあなたの代わりにOutlookを操作してくれるイメージです。
Step 1: 準備はこれだけ!ライブラリのインストール
まず、PythonからWindowsアプリケーションを操作するための「魔法の杖」となるライブラリpywin32をインストールします。
WindowsのコマンドプロンプトやPowerShellを開いて、以下のコマンドを一行入力し、Enterキーを押してください。
pip install pywin32
これだけで準備は完了です!
【注意】 この方法は、Windows PCにOutlookがインストールされ、メールアカウントが設定されていることが前提となります。
Step 2: 魔法の7行コード!基本のメール送信
それでは、実際にメールを送信するコードを見ていきましょう。
テキストエディタ(VSCodeなど)に以下のコードを貼り付けて、your_script.pyのような名前で保存してください。
import win32com.client as win32
# 1. Outlookを起動する
outlook = win32.Dispatch('outlook.application')
# 2. 新しいメールを作成する
mail = outlook.CreateItem(0)
# 3. メールの内容を設定する
mail.To = 'recipient@example.com' # 宛先アドレス
mail.Subject = 'Pythonからのテストメール' # 件名
mail.Body = 'これはPythonプログラムから自動で送信されたメールです。' # 本文
# 4. メールを送信する
mail.Send()
print("メールを送信しました!")
mail.Toの部分を送信したい相手のメールアドレスに書き換えて、このPythonスクリプトを実行してみてください。
あなたのOutlookから自動でメールが送信されるはずです!
たったこれだけで、毎日の報告メールなどを自動化する第一歩が踏み出せます。
Step 3: もっと便利に!応用テクニック集
基本のメール送信ができるようになったら、次はもっと実用的なテクニックに挑戦してみましょう。
1. CCやBCCを追加する
関係者にもメールを送りたい場合は、CCやBCCプロパティを使います。
複数のアドレスはセミコロン(;)で区切ります。
mail.CC = 'person1@example.com; person2@example.com'
mail.BCC = 'boss@example.com'
2. ファイルを添付する
報告書やExcelファイルを添付するのも簡単です。
Attachments.Add()メソッドにファイルのフルパスを指定します。
attachment_path = 'C:\\Users\\YourName\\Documents\\report.xlsx'
mail.Attachments.Add(attachment_path)
3. HTMLメールでリッチな表現を
文字を太くしたり、リンクを貼ったりしたい場合は、HTML形式でメールを作成します。
mail.BodyFormat = 2 # 2はHTML形式
mail.HTMLBody = """
<h3>日次レポートのご連絡</h3>
<p>本日の売上レポートを添付いたしました。</p>
<p>詳細は<a href="https://internal.portal.site">社内ポータル</a>をご確認ください。</p>
"""
4. 送信せずに「下書き」に保存する
いきなり送信するのが不安な場合は、mail.Send()の代わりにmail.Save()を使うと、Outlookの下書きフォルダにメールが保存されます。
内容を確認してから手動で送信できるので安心です。
mail.Save()
print("下書きフォルダに保存しました。")
Step 4: メールの受信も自動化できる!
pywin32のすごいところは、送信だけでなく受信メールの操作もできる点です。
例えば、「受信トレイにある件名『日報』のメールから添付ファイルを自動で特定のフォルダに保存する」といった処理も自動化できます。
import os
outlook = win32.Dispatch('outlook.application')
namespace = outlook.GetNamespace("MAPI")
inbox = namespace.GetDefaultFolder(6) # 6は受信トレイ
save_folder = "C:\\DailyReports"
if not os.path.exists(save_folder):
os.makedirs(save_folder)
for message in inbox.Items:
if "日報" in message.Subject and message.Attachments.Count > 0:
for attachment in message.Attachments:
# 添付ファイルを保存
attachment.SaveAsFile(os.path.join(save_folder, attachment.FileName))
print(f"'{attachment.FileName}'を保存しました。")
このコードを定期的に実行するように設定すれば、面倒なファイル保存作業から解放されます!
まとめ
今回は、Pythonとpywin32ライブラリを使ってOutlookのメール操作を自動化する方法をご紹介しました。
- 簡単なコードでメールの自動送信ができる
- ファイル添付やHTMLメールなどの応用も可能
- 受信メールの整理や添付ファイルの保存も自動化できる
単純な繰り返し作業はプログラムに任せて、あなたはもっと創造的な仕事に時間を使いましょう。
この記事が、あなたの業務効率化のきっかけになれば幸いです!
ぜひ、あなたの身の回りの「面倒なメール作業」をPythonで自動化してみてください。
本ブログ「ゴマフリーダムのPython教室」のトップページへは以下へアクセス!



達人に学ぶDB設計 徹底指南書