PythonからGmailを使ってメールを送信する方法

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のセキュリティレベルを戻しておきましょう。



カテゴリー