【Python】Gmailでメールを送信する

機能

Gmailでメールを送信するPythonプログラムです。

コマンドラインで指定したメッセージをGmailで送信します。

例えば、以下のコマンドを実行すると

python gmail_sender_test.py test@example.com テスト送信 テスト送信です。
※メールアドレスはダミーです。

以下のメールが送信されます。

サンプル動画

youtu.be

プログラム

#! python3
# 機能
#  Gmailでメールを送信する
# 使い方
#  import gmail_sender
#  gmail_sender.send("メールアドレス", "件名", "本文")

import os
import json
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate

# 認証情報の取得
credential_path = os.path.join(os.path.dirname(__file__), "credential.json")
with open(credential_path, "r", encoding="utf-8") as file:
    credential = json.load(file)

login_address = credential["login_address"]
login_password = credential["login_password"]


# メールを送信する
def send(address, subject, body):
    # SMTPサーバ接続
    smtpobj = smtplib.SMTP("smtp.gmail.com", 587)
    smtpobj.starttls()
    smtpobj.login(login_address, login_password)

    # メール作成
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = login_address
    msg["To"] = address
    msg["Date"] = formatdate()

    # メール送信
    smtpobj.send_message(msg)
    smtpobj.close()
#! python3
# 機能
#  Gmailでメールを送信する
# 使い方
#  1.Pythonを実行する
# 実行コマンド
#  python gmail_sender_test.py メールアドレス 件名 本文
#  python gmail_sender_test.py test@example.com テスト送信 テスト送信です。

import sys
import gmail_sender

if len(sys.argv) != 4:
    sys.exit("使い方:python gmail_sender_test.py メールアドレス 件名 本文")

gmail_sender.send(sys.argv[1], sys.argv[2], sys.argv[3])
{
    "login_address": "Gmailアドレス",
    "login_password": "Gmailのアプリパスワード"
}

他のプログラムでも利用したいため、メール送信機能をモジュール化(gmail_sender.py)しています。

また、認証情報をネットに晒すリスクを減らすため、ファイルから認証情報を取得するようにしています。

使い方

  1. Pythonを実行する

実行コマンド

python gmail_sender_test.py メールアドレス 件名 本文
python gmail_sender_test.py test@example.com テスト送信 テスト送信です。

smtplibをインストールしていない場合は以下のコマンドを実行して下さい。

pip install smtplib

Gmailのアプリパスワードの設定方法は以下のサイトを参考にして下さい。

Gmail(Google)アカウント - アプリパスワードの生成(作成) | PC設定のカルマ

参考文献

www.oreilly.co.jp

qiita.com

pc-karuma.net