プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

プログラムからGmailを送信する

Gmailはプログラムからメール送信をすることができる機能が提供されています。
ここでは、その手順を記しておきます。
現在は、「アプリパスワード」という仕組みになっています。
過去には、メールアドレスとログインパスワードで送信できましたが、現在新規ではその機能はできないようです。
この「「アプリパスワード」は通常のGoogleアカウントにログインするのとは別のパスワードで、プログラムからのみ使用することができます。

アプリパスワード作成手順

まず、アプリで使う用のGmailアカウントを作成します。
普段使っているGmailアカウントでも、もちろん作成可能ですが、プログラム用に新しく作成することをお勧めします。

以下は、そのアカウントでGmailにログインした前提での手順です。

以下のマイアカウントからセキュリティを開きます。
myaccount.google.com
https://myaccount.google.com/

Googleにログインする方法を設定します。

上部の検索から「アプリパスワード」と検索し開きます。

任意のアプリ名称を設定します。

アプリパスワードが生成されるので控えておきます。

ちなみに、送信元のアカウントの表示名やアイコンは「個人情報」から設定できます。

Pythonでメール送信

以下を参考に、settioong.txtから設定を読み込み送信するようにしました。
settioong.txtは改行区切りで、アカウントのメールアドレス、アプリパスワード、送信先アドレスを記載します。
news.mynavi.jp

# coding: utf-8
import smtplib
import ssl
from email.mime.text import MIMEText

mail_account = ""
ap_password = ""
mail_to = ""


def read_setting():
    f = open("setting.txt", "r", encoding="utf-8")
    r = f.readlines()
    global mail_account
    global ap_password
    global mail_to
    mail_account = r[0].replace("\n", "")
    ap_password = r[1].replace("\n", "")
    mail_to = r[2].replace("\n", "")
    str.lstrip(mail_account)
    str.lstrip(ap_password)
    str.lstrip(mail_to)
    f.close()


def send_mail(subject, body, mail_to, mail_acnt, ap_pass):
    print("送信元アドレス: ", mail_account)
    print("アプリパスワード: ", ap_password)
    print("送信先アドレス: ", mail_to)
    msg = MIMEText(body, "html")
    msg["Subject"] = subject
    msg["To"] = mail_to
    msg["From"] = mail_acnt

    # Gmailに接続 --- (*4)
    server = smtplib.SMTP_SSL(
        "smtp.gmail.com", 465, context=ssl.create_default_context()
    )
    server.login(mail_acnt, ap_pass)
    server.send_message(msg)  # メールの送信
    print("Gmail send ok.")


read_setting()
send_mail("メールテスト", "これはテストです", mail_to, mail_account, ap_password)

まとめ

Line Notifyがサービス終了となるので、代わりの方法として今、個人的には一番有力です。
ちなみに、Gmailは商用利用も制限はないそうです。
(OKとも書いてないが、NGとも書いていない)
policies.google.com