Pythonでメール送信を自動化!新人エンジニアのためのEmailモジュール徹底ガイド

こんにちは。ゆうせいです。

プログラムから自動でメールが送れたら、日々の業務がぐっと楽になると思いませんか?例えば、システムの異常を検知したら管理者に通知したり、ユーザーが登録したらウェルカムメールを送ったり…。そんな「メール送信の自動化」を実現する上で欠かせないのが、PythonのEmailモジュールなんです。

今回は、新人エンジニアのあなたに向けて、PythonのEmailモジュールの基本的な使い方から、実際にメールを送信する仕組みまで、分かりやすく解説していきますね!

メール作成の専門家!Emailモジュールとは?

まず、「モジュール」という言葉に戸惑う必要はありません。これは、便利な機能がたくさん詰まった「道具箱」のようなものだと考えてください。

そしてEmailモジュールは、その名の通り「Eメールを作成する」ための専門的な道具箱です。Pythonには標準で備わっている(標準ライブラリと言います)ので、特別なインストール作業なしに誰でもすぐに利用を開始できます。

このモジュールを使うと、プログラム上でメールの「部品」を一つひとつ組み立てていくことができます。具体的には、

  • 宛先 (To)
  • 送信元 (From)
  • 件名 (Subject)
  • メール本文

といった、私たちが普段目にしているメールの各要素を、まるでプラモデルを組み立てるかのように設定できるのです。

なぜEmailモジュールを使うの?そのメリットとは

「ただメールを送るだけなら、手で送った方が早いのでは?」と感じるかもしれません。しかし、プログラムでメールを送ることには、手作業にはない大きなメリットがあります。

一番のメリットは、やはり「自動化」できる点です。

例えば、あなたがECサイトを運営しているとしましょう。お客様が商品を購入するたびに、手作業で注文確認メールを送るのは大変ですよね。もし注文が殺到したら、対応が追いつかなくなったり、宛先を間違えるといったミスも起こりかねません。

しかし、Emailモジュールを使えば、「商品が購入されたら、自動で注文確認メールを生成して送信する」という一連の流れをプログラムに任せられます。これにより、あなたは時間と手間を大幅に節約でき、ヒューマンエラーを防ぐことにも繋がるのです。これは本当に強力ですよ!

まずはシンプルなメールを作ってみよう

それでは、実際にEmailモジュールを使って、簡単なテキストメールを作成してみましょう。百聞は一見に如かず、です!

メールを作成するには、email.messageという道具箱の中にあるEmailMessageというクラス(設計図のようなもの)を使います。

from email.message import EmailMessage

# EmailMessageオブジェクトを作成
msg = EmailMessage()

# メールの各要素を設定
msg['Subject'] = 'Pythonからのテストメール'
msg['From'] = 'sender@example.com'
msg['To'] = 'receiver@example.com'
msg.set_content('これは、PythonのEmailモジュールから送信されたテストメールです。')

どうでしょうか?コードを読むだけで、何をしているのか直感的に理解できませんか?

  1. EmailMessage()で、まっさらなメールの器を準備します。
  2. msg['Subject']のように、辞書(キーと値のペア)のような感覚で、件名・送信元・宛先といった「ヘッダー情報」を設定していきます。
  3. msg.set_content()で、メールの本文を書き込んでいます。

たったこれだけで、メールのデータを作成できました。簡単ですよね!

作ったメールを送信するには?SMTPの役割

ここで一つ、とても重要な注意点があります。

実は、Emailモジュールができるのは、あくまで「メールのデータを作成する」ことだけ。このモジュール自体には、作成したメールをインターネットの世界へ送り出す「送信機能」はないのです。

「え、じゃあどうやって送るの?」と疑問に思いますよね。

ここで登場するのが、郵便局の配達員のような役割を担う別のモジュール、smtplibです。SMTP(Simple Mail Transfer Protocol)とは、インターネットでメールを送信するためのお約束事(プロトコル)のこと。そしてsmtplibは、このお約束事に従ってメールを配送してくれる専門家なのです。

つまり、メール送信は、

  1. Emailモジュールで手紙(メールデータ)を書く。
  2. smtplibモジュールに、その手紙を渡して配達してもらう。

という二段階のプロセスで実現されます。この役割分担をしっかり覚えておきましょう!

はい、承知いたしました。

先のEmailモジュールの解説に続けて、smtplibモジュールの解説を執筆します。


郵便配達員にお願いしよう!smtplibモジュールの使い方

先ほど、Emailモジュールは「手紙を書く」専門家で、smtplibモジュールはそれを届ける「郵便配達員」の役割を担うと説明しましたね。

SMTPとは「Simple Mail Transfer Protocol」の略で、ものすごく簡単に言えば「メールを送信(Transfer)するための、シンプルなお約束事(Protocol)」です。そしてsmtplibモジュールは、このお約束事に従って、私たちがEmailモジュールで丁寧に書き上げたメールを、相手のメールボックスまで送り届けてくれるのです。

では、この郵便配達員に配達をお願いする手順を、ステップバイステップで見ていきましょう!

メール送信の4ステップ

smtplibを使ったメール送信は、現実世界で郵便局に行って手紙を出す流れとそっくりです。

  1. 郵便局(メールサーバー)に行く: smtplib.SMTP()まず、メールを配送してくれる最寄りの郵便局、つまり「SMTPサーバー」に接続します。GmailならGmailの、OutlookならOutlookの専用サーバーがあり、それぞれ住所(ホスト名)と窓口の番号(ポート番号)が決まっています。
  2. 身分を証明してログインする: smtp.login()次に、あなたが誰であるかを証明するために、メールアドレスとパスワード(または後述するアプリパスワード)を使ってサーバーにログインします。これにより、不正な利用を防いでいるわけですね。
  3. 手紙(メール)を渡す: smtp.send_message()ログインが完了したら、いよいよEmailモジュールで作ったメールオブジェクト(msg)を配達員に渡します。「これ、お願いします!」と手渡すイメージです。
  4. 郵便局から出る: smtp.quit()無事に手紙を預けたら、「ありがとうございました」と挨拶して郵便局から出ます。つまり、サーバーとの接続をちゃんと切断する、ということです。これはとても大切なお作法です。

コードで見てみよう!Gmailからメールを送る例

それでは、これまでの内容をすべて組み合わせた完成形のコードを見てみましょう。ここでは、多くの方が使っているGmailを例に取ります。

import smtplib
from email.message import EmailMessage

# --- Emailモジュールでメールを作成 ---
msg = EmailMessage()
msg['Subject'] = 'Pythonからのテストメール'
msg['From'] = 'your_email@gmail.com'
msg['To'] = 'receiver@example.com'
msg.set_content('これは、smtplibモジュールを使って送信されたテストメールです。')

# --- smtplibモジュールでメールを送信 ---
# GmailのSMTPサーバーに接続する
# with構文を使うと、処理が終わったあとに自動でquit()を呼んでくれるので安全です
with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
    # 通信を暗号化する
    smtp.starttls()
    # ログインする
    smtp.login('your_email@gmail.com', 'your_app_password')
    # メールを送信する
    smtp.send_message(msg)

print('メールを送信しました!')

【超重要】Gmailを使う場合の注意点

このコードを動かす上で、一つだけ、しかし非常に重要な注意点があります。

smtp.login()で使うパスワードは、普段あなたがGmailにログインする時に使っているパスワードではありません!

セキュリティの観点から、Googleはプログラムからのログインには「アプリパスワード」という専用のパスワードを使うことを推奨しています。これは、あなたのアカウント設定から生成できる16桁の特別なパスワードです。

もし「認証エラー」のような表示が出た場合は、まずこの「アプリパスワード」が正しく設定できているかを確認してください。設定方法は「Google アプリパスワード」などで検索すると、公式のヘルプページが見つかりますよ。

さあ、これであなたもプログラムからメールを送る準備が整いました!

まずはこの記事のコードを参考に、あなた自身のアドレス宛にテストメールを送ることから始めてみましょう!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。