PythonからGmailを使ってメールを送信する方法
PythonのスクリプトからGmailでメールを送信する方法を紹介していきます。
必要なものは、
- Pythonの実行環境(ネット接続)
- Gmailアカウント
この二つのみ。さっそくやり方を見て行きましょう。
PythonからGmailでメールを送る
まず先にコードを見ていきます。
from email import message
import smtplib
smtp_host = 'smtp.gmail.com'
smtp_port = 587
from_email = 'XXX' # 送信元のアドレス
to_email = 'XXX' # 送信先のアドレス
username = 'XXX' # Gmailのアドレス
password = 'XXX' # Gmailのパスワード
# メールの内容を作成
msg = message.EmailMessage()
msg.set_content('test mail') # メールの本文
msg['Subject'] = 'test mail(sub)'# 件名
msg['From'] = from_email# メール送信元
msg['To'] = to_email #メール送信先
# メールサーバーへアクセス
server = smtplib.SMTP(smtp_host, smtp_port)
server.ehlo()
server.starttls()
server.ehlo()
server.login(username, password)
server.send_message(msg)
server.quit()
コード自体は非常にシンプルです。usernameとpasswordの部分には自分が持っているGmailアカウントのアドレスとパスワードを入力します。これはメールサーバーにアクセスして、ログインするためですね。
エラーが起こる人はGoogle側のエラーをチェック
上記のコードで内容を差し替えればGmailを使ってメールを送ることができます。
しかし、初めてこのコードを実行する時にはGoogle側でセキュリティが起動するのでエラーが返ってくることもあります。
この場合、手動でセキュリティレベルを変更することでコードを問題なく実行することができます。
Googleから警告メールが送られてくるので、実行を許可します。
このメールの下側に以下のような文章があります。
ログインしようとしましたか?
お使いのアプリからのログインは引き続きブロックされます。これはアプリに既知のセキュリティ上の問題があるか、アプリが古いためです。安全性の低いアプリへのアクセスを許可して、このアプリを使用し続けることもできますが、アカウントが脆弱なままになるおそれがあります。
ちょうど赤字の部分からリンクが貼られているので、こちらからアクセスしアプリへのアクセスを許可します。
アクセスを許可するとメールが再送されます。
許可した後にもう一度、コードを実行してみましょう。問題なくコードが実行できると思います。
また、コードを実行した後、セキュリティが気になる人はGoogleのセキュリティレベルを戻しておきましょう。