こんな人の役に立つかも
・社内環境の制約から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」を使うと簡単!