PythonでOutlookを使ってメールを自動送信する方法

こんな人の役に立つかも

・社内環境の制約からSMTPを使ったメール送信ができない
・メール作成自動化のプログラミングをしてみたい
・事務作業を効率化したい

先日、お客様と打ち合わせしていたときに「Pythonを使ってメールを送信したい!」というリクエストがありました。

詳しく話を聞いてみると、
プログラムが実行完了したことをメールで通知したい・・・
毎回同じテンプレートでメール作成するのが面倒・・・

たしかに、面倒なことは自動化して、手間も時間も省きたいですよね。

ちなみに、日本のビジネスにおいて、主なコミュニケーション手段の第一位は「メール」(99.1%)だそうです。
また、仕事で使用しているメールソフトは「Outlook」(50.52%)と「Gmail」(38.40%)が二強だそうです。

そこで、今回は PythonからOutlookを使ってメールを送信する方法 をご紹介したいと思います!

事前準備

outlookを操作するためには win32com.client をインポートする必要があります。
※Anaconda環境であれば、特に追加でインストールは不要です。

もし、インストールが必要な方は、pip などでインストールしましょう。

pip install pywin32

※紛らわしいですが、ライブラリ名はwin32ではなくpywin32になります。

この「win32com」というライブラリは、COMインターフェース経由でパソコンにインストールされているアプリケーションを操作することができます。


それでは、「win32com」を使って Microsoft Outlook からメールを送信するコードを紹介します。

PythonでOutlookメールを送信するサンプルコード

import win32com.client

# Outlookアプリケーションをインスタンス化
outlook = win32com.client.Dispatch(“Outlook.Application”)

# メールオブジェクトの作成
mail = outlook.CreateItem(0) # 0:メール

mail.to = ‘to.xxx@example.com’
mail.cc = ‘cc.xxx@example.com’
mail.bcc = ‘bcc.xxx@example.com’
mail.subject = ‘テストメール’
mail.bodyFormat = 1mail.body = ”’各位
お疲れ様です。(ここに本文を入力)よろしくお願いいたします。
”’

# 送信前に確認(Outlookが起動)
mail.display(True)

# メール送信
mail.Send()

簡単にプログラムの解説をします。

まず、Outlookを操作するために、Outlookアプリケーションをインスタンス化します。

outlook = win32com.client.Dispatch(“Outlook.Application”)

次に、メールオブジェクトを作成します。

mail = outlook.CreateItem(0)

オブジェクトの作成時に、outlook.CreateItem(0) の「0」の部分を変えることにより、Outlookのメールや予定表など様々なアイテムを作ることができます。

0:メール
1:予定
2:連絡先
3:タスク

次に、メールオブジェクトに属性をセットしていくことで、メールを作成していきます。

作成したメールを送信する前に確認したい場合は、mail.display(True) とします。
そうすることで、以下のようにOutlookが起動し、作成したメールを確認できます。

メールが完成したら Send()メソッドを使って送信します。

mail.Send()

以上です。

今回はOutlookメールを自動送信するシンプルなプログラムをご紹介しましたが、色をつけたり文字色を変えたり、画像を埋め込んだりもできます。

さらに、win32comを使うと、Outlookの他にもExcelなども自動化できます。

興味のある方は、ぜひチャレンジしてみてください!

まとめ

  • PythonでOutlookからメールを送信するなら「win32com」を使うと簡単!