【Python】Gmailでメールを送信する
機能
コマンドラインで指定したメッセージをGmailで送信します。
例えば、以下のコマンドを実行すると
python gmail_sender_test.py test@example.com テスト送信 テスト送信です。 ※メールアドレスはダミーです。
以下のメールが送信されます。
サンプル動画
プログラム
#! 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)しています。
また、認証情報をネットに晒すリスクを減らすため、ファイルから認証情報を取得するようにしています。
使い方
- Pythonを実行する
実行コマンド
python gmail_sender_test.py メールアドレス 件名 本文 python gmail_sender_test.py test@example.com テスト送信 テスト送信です。
smtplibをインストールしていない場合は以下のコマンドを実行して下さい。
pip install smtplib
Gmailのアプリパスワードの設定方法は以下のサイトを参考にして下さい。
Gmail(Google)アカウント - アプリパスワードの生成(作成) | PC設定のカルマ