【自動化】Pythonでメールを送信する方法

アイキャッチ画像
  • Pythonでメールを送信する方法とは?
  • smtplibの使い方とは?

本記事ではこのような疑問を解決します。


あなたは定型文メールやパターン化されたメールを手動で送信していませんか?

このようなメールのやりとりを手動で行なっている場合、
効率性に欠け、時間を大幅に損していることでしょう。

しかし、この記事を読めば今まで手間をかけていた作業を瞬時に終わらせ、空いた時間で好きなことができるようになります。

さらに、Pythonであれば数行のコードを書くだけで簡単にメール送信を行うことができます。


そこで今回はPythonでメールを送信する方法について解説していきます。

前提知識

Python(他のスクリプト言語でもOK)でメールを送信する仕組みは基本的に以下の通りです。

メール内容(宛先・本文など)を作成する

メール内容をMIME形式のデータに変換する

SMTPサーバー(メール送信用サーバー)にログインする

メールを送信する

なお、上記のプロセスの中に送信先リストやメール内容を取得するプロセスを含めれば、より便利になります。


Pythonにはメールを送信するための標準ライブラリがあらかじめ用意されています。

今回は以下のようなライブラリ・モジュールを使用します。

smtplib
→SMTPサーバーへログインするに使用

ssl
→SSL接続するために使用

MIMEText
→テキストをMIME形式に変換するために使用

コード

ここではどのような記述が必要になるのか以下のコードで説明します。

import smtplib, ssl
from email.mime.text import MIMEText

# メールサーバーアカウント情報を変数に格納する
account = "メールアドレス"
password = "パスワード"

# メール内容をそれぞれ変数に格納する
mail_from = account
mail_to = "送信先メールアドレス"
mail_subject = "件名"
mail_text = """
メール本文
"""

# メールデータをMIME形式に変換する
msg = MIMEText(mail_text, "plain")
msg["From"] = mail_from
msg["To"] = mail_to
msg["Subject"] = mail_subject

# SMTPサーバーにログインしてメールを送信する
server = smtplib.SMTP_SSL("SMTPサーバー", ポート番号, context=ssl.create_default_context())
server.login(account, password)
server.send_message(msg)
server.close()

それでは実際に記述例を以下のコードで確認してみましょう。
※今回はお名前.comのSMTPサーバーを想定

import smtplib, ssl
from email.mime.text import MIMEText

# メールサーバーアカウント情報を変数に格納する
account = "kosuke@example.com"
password = "×××××××××××"

# メール内容をそれぞれ変数に格納する
mail_from = account
mail_to = "〇〇@yeah.com"
mail_subject = "久しぶり!"
mail_text = """
こんにちは!
お元気ですか?
"""

# メールデータをMIME形式に変換する
msg = MIMEText(mail_text, "plain")
msg["From"] = mail_from
msg["To"] = mail_to
msg["Subject"] = mail_subject

# SMTPサーバーにログインしてメールを送信する
server = smtplib.SMTP_SSL("mail××.onamae.ne.jp", 465, context=ssl.create_default_context())
server.login(account, password)
server.send_message(msg)
server.close()

応用例

本記事で解説したPythonによるメール送信の方法は様々な形で応用ができます。

今回は応用例を2つご紹介します。

Gメールを使う(SMTPサーバーの変更)

本記事ではお名前.comを用いましたが、Gメールでも同じことができます。

具体的には、Googleアカウントのセキュリティ設定ページを操作し、外部からアクセスできるようにします。

※今後使用できなくなる場合もあります。

Djangoで使う(Webフレームワークの使用)

Webサービスにおいて、お知らせやエラー通知などをメールで送信する機能は欠かせません。

そのため、Web開発の中でメール送信の自動化は必要な機能実装と言えます。

例として、Python製WebフレームワークのDjangoであれば、viewsファイルの中に関数として組み込むことでメール送信が実現できます。

まとめ

以上がPythonでメールを送信する方法になります。

今回の内容を参考にすれば、顧客や店舗などにお知らせメールなどを自動で送ることができます。

本記事が、少しでもPython開発の手助けになれれば幸いです。