【業務自動化】チャプター3-5:メール送信を自動化しよう

ながみえ
本記事には広告(アフィリエイトリンク)が含まれます。リンク経由で申込が発生した場合、当サイトが報酬を受け取る可能性があります。

一つ前のページでは 残業集計ツール を作成しました。

今回は メール送信の自動化 を行いましょう。

Chapter1:PythonでExcelを操作しよう
Chapter2:PyInstallerで自動化ツールを(.exe)作ろう
Chapter3:便利な自動化ツールを5つ作ろう
 ・Chapter3-1:Excelファイルをフォルダ丸ごと結合しよう
 ・Chapter3-2:テンプレートを使った請求書自動作成
 ・Chapter3-3:グラフ付き売上レポート自動生成ツールを作ろう
 ・Chapter3-4:勤怠の丸め・残業集計自動化ツールを作ろう
 ・Chapter3-5:メール送信を自動化しよう ◁今回はここ
Chapter4:Webスクレイピング入門
Chapter5:自動化ツールを作って稼ごう

Excel にまとまったアドレス帳をもとに、一括でメールを送れる仕組みをPythonで作成してみましょう。

もちろん、それは一般のメールソフトにもできる基本的な機能です。しかし、Pythonで自動化することで以下のようなメリットが生まれます。

  • 社内の定型報告や請求書送付を定期的に自動送信できる
  • Webスクレイピング(Chapter4で学習)と組み合わせて、ネット上の情報を自動収集 ⇒ 自動送信できる
  • Excelにある顧客リストから自動で宛先を読み込み、本文を個別にカスタマイズした上で自動送信

本記事で紹介するコードはただの「メールの一括送信ツール」です。これだけではそれほど価値はありません。

しかしこれをベースとして拡張していくことで、実務に役立つ強力な仕組みに発展させられるのが最大の価値です。

本記事は前半は無料後半は会員向けの有料記事です。
業務自動化の全ての記事セットが今だけ 1980円 ⇒ 980円。
どこよりも安いこの教材を、是非ご活用下さい^^

Q
もくじ

青字は無料部分。白字は会員向け部分です。

  1. Pythonでメール送信を自動化する仕組み
  2. サンプルスクリプト|openpyxlでExcel→SMTP送信
    • 送信リストExcelの自動生成スクリプト
    • ダミーSMTPサーバーの起動|aiosmtpdで安全に送信テスト
    • サンプルスクリプト|MIMETextで本文生成し一斉送信
  3. 実運用への応用方法|本番SMTP・Gmail連携・認証の注意点
    • 本番でメールを送るには|SMTPサーバー設定とポート/暗号化
    • Gmailのアプリパスワードについて
  4. まとめ|メール送信自動化を使いこなそう

どこよりも安いこの教材を、是非ご活用下さい。

<<前のページ

業務自動化の記事一覧

次のページ>>

Pythonでメール送信を自動化する仕組み

Pythonでメールを送るときには、メールソフトを使うわけではなく「プログラムが直接メールサーバーに接続して送信」します。

そのため単純なコマンドだけで済むわけではなく、メールの仕組みや通信のルールをある程度知っておく必要があります。

ここからは、Pythonでのメール送信に必要な基本要素を順に解説します。

まずは「メールの仕組み」「SMTP」「MIMEText」といったキーワードを押さえていきましょう。

あわせて読みたい
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】
【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

メール配信の仕組みと流れ

普段私たちが使っているメールは、Gmail や Outlook などのアプリを通じて送受信しています。

しかし、アプリが直接相手に届けているわけではなく、必ず「メールサーバー」を介してやり取りが行われます。

送信の流れをシンプルに表すと、次のようになります。

  1. 送信者が書いたメールを、まず自分が利用する送信サーバーに渡す
  2. サーバー同士がやり取りをして、宛先の受信サーバーへ転送する
  3. 受信サーバーに保存されたメールを、受信者が自分のアプリから読み込む

この仕組みを理解しておくと、Pythonでメールを送るときに「プログラムがどの役割を担うのか」が見えてきます。

つまり、Pythonは送信者の代わりに 送信サーバーへ接続してメールを託す 役割を果たします。

SMTPとは|Pythonのsmtplibでサーバーへ送信する基本

SMTP(Simple Mail Transfer Protocol)は、インターネット上でメールを送信するための基本的な通信規格です。

私たちがGmailやOutlookで送ったメールも、裏側では必ずSMTPのルールに従ってサーバーに届けられています。

Pythonでメールを自動送信する際も、プログラムがSMTPサーバーに接続して「誰から誰へ」「件名は何か」「本文はどんな内容か」を指示する必要があります。

そのために使うのが、標準ライブラリに含まれる smtplib です。

今回のサンプルコードでは学習用として、外部にメールを送信するのではなく ローカル環境で起動したダミーSMTPサーバー に接続する仕組みを採用しています。

これにより誤って本物のメールを送ってしまう心配がなく、メールの送信処理を安全に試せます。

MIMETextとは|テキスト/HTML本文と文字エンコードの基礎

メールは単純に「文字列を送りつける」だけでは成立しません。

送信者や宛先、件名、本文といった複数の情報をひとつの「メールメッセージ」として組み立てる必要があります。

そのために利用されるのが MIME(Multipurpose Internet Mail Extensions) という仕組みです。

Pythonでは、標準ライブラリの email.mime.text.MIMETextクラス を使うことで、本文をメール形式に整形できます。これを利用すると:

  • 本文の文字コード(例:UTF-8)を指定できる
  • 本文の種類(プレーンテキストかHTMLか)を選べる
  • サーバーが理解できる「正式なメール構造」として扱える

今回紹介するサンプルコードでは MIMEText(body, "plain", "utf-8") という形で呼び出し、Excelから読み込んだ本文を プレーンテキスト形式 でメールメッセージに変換しています。

こうすることで、件名や送信元と組み合わせた「完成したメール」としてサーバーに渡せるようになります。

【Python】勉強猫がノートパソコンを見ながら考え込む様子。記事内の休憩用イラスト

サンプルスクリプト|openpyxlでExcel→SMTP送信

メール送信自動化のサンプルスクリプトを紹介します。

このサンプルで実現できること

ここからは実際にコードを動かしながら、Excelに記載した宛先リストをもとにメールをまとめて送信する仕組みを学んでいきます。

今回用意しているサンプルスクリプトは、次のような流れで処理を行います。

  1. Excelファイルから宛先・件名・本文を読み込む
    → 1行目はヘッダー、2行目以降をデータとして扱います。
  2. メールメッセージを組み立てる
    MIMEText を利用して本文をメール形式に整形し、件名や宛先を追加します。
  3. SMTPサーバーに接続してメールを送信する
    → 学習用のダミーサーバーに送信し、ターミナルに内容を表示させます。

つまり、このサンプルコードを動かすことで「Excelのリストをもとにメールをまとめて処理する」一連の流れを確認できます。

実際の業務にそのまま使うのではなく、仕組みを理解するための最小限のモデルケースだと考えてください。

ここから先は限定公開です

すでに購入済みの方はこちら

購読には会員登録が必要です

「半角英数字」と「大文字1個以上」を含む、8文字以上

会員登録には 利用規約/特定商取引法に基づく表記 への同意が必要です。

すでに会員の方はこちら

ログインして記事を読む

メールアドレス
パスワード
パスワードを忘れた方
新規会員登録はこちら

パスワード再設定

パスワードを再設定します。入力したメールアドレスに再設定用のURLをお送りしますので、パスワードの再設定を行なってください。
キャンセル
記事URLをコピーしました