【Python基礎】Gmailでメールを送信

  • URLをコピーしました!
目次

Gmail

前回、一瞬でファイルやフォルダを非表示にして、デスクトップを綺麗にしてくれるアプリ「HiddenMe」というアプリを紹介しました。

今回はPythonからGmailを送信する方法を紹介します。

ただしPythonからGmailを送信するためには、Gmail側の設定も必要になってきます。

ということでまずはGmailの設定から始めていきましょう。

Gmailの設定

Gmailの設定で行わなければいけないのは、「2段階認証」を設定することと「アプリパスワード」を取得することです。

まずはPythonでGmailを送信したいアカウントにログインします。

ログインしたら右上のアイコンをクリックします。

「Googleアカウントを管理」をクリックします。

Googleアカウントの画面に移動したら、左のメニューから「セキュリティ」をクリックします。

「Googleへのログイン」の「2段階認証プロセス」がオフになっていることを確認し、右の「>」をクリックします。

2段階認証プロセスの画面に移動したら下にスクロールします。

「使ってみる」をクリックします。

本人確認を求められるのでパスワードを入力し、「次へ」をクリックします。

本人確認で使用する電話番号を入力し、コードを受け取る方法を「テキストメッセージ」か「音声通話」から選択し、「次へ」をクリックします。

(私はテキストメッセージを選択しました)

取得したコードを入力し、「次へ」をクリックします。

正しいコードが入力されたら確認は終了です。

「有効にする」をクリックします。

これで2段階認証プロセスは設定できたので、「2段階認証プロセス」の左にある「←」をクリックして、Googleアカウントの設定画面に戻ります。

再度「セキュリティ」、「Googleへのログイン」の項目で「アプリパスワード」が「なし」になっていることを確認し、右端の「>」をクリックします。

再度本人確認のため、パスワードを入力し、「次へ」をクリックします。

「アプリを選択」は「メール」を選択し、「デバイスを選択」は自分の環境を選択します。

(私の場合はMacを選択しました)

黄色のブロックのところにアプリパスワードが表示されるので、これを保存しておきます。

これでGmail側の設定は完了です。

PythonでGmailを送信してみる

まずはプログラム全体をお見せします。

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

mailaddress = 'メールアドレス'
password = 'アプリパスワード'

subject = 'タイトル'
text = '本文'
address_from = '送信元メールアドレス'
address_to = '送信先メールアドレス'

smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
smtpobj.starttls()
smtpobj.login(mailaddress, password)

msg = MIMEText(text)
msg['Subject'] = subject
msg['From'] = address_from
msg['To'] = address_to
msg['Date'] = formatdate()

smtpobj.send_message(msg)
smtpobj.close()

インポートするライブラリ、モジュールは以下の三つ。

Pythonの標準ライブラリなのでインストールは必要ありません。

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

詳しくはよく分からないのですが、smtplibはメール送信サーバー(SMTPサーバー、Simple Mail Transfer Protocolサーバー)への接続のライブラリ、MIMETextはメールのテキストのオブジェクト作成のライブラリ、formatdateはメール用の日時のライブラリのようです。

mailaddressからaddress_toまではメール送信に必要な情報です。

「mailaddress」と「password」は先ほどアプリパスワードを取得したメールアカウントのアドレスとアプリパスワードです。

「subject」はメールのタイトル、「text」がメールの本文、「address_from」が送信元メールアドレス、「address_to」が送信先メールアドレスです。

mailaddress = 'メールアドレス'
password = 'アプリパスワード'

subject = 'タイトル'
text = '本文'
address_from = '送信元メールアドレス'
address_to = '送信先メールアドレス'

次の3行がSMTPサーバーへの接続です。

smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
smtpobj.starttls()
smtpobj.login(mailaddress, password)

次の5行でMIMETextのオブジェクトにメールの情報を格納しています。

msg = MIMEText(text)
msg['Subject'] = subject
msg['From'] = address_from
msg['To'] = address_to
msg['Date'] = formatdate()

格納した情報を使ってメールを送信し、SMTPサーバーへの接続をクローズします。

smtpobj.send_message(msg)
smtpobj.close()

これでPythonからメールが送れました。

closeを忘れる方へ

closeを忘れてしまう方にはこんな感じで「with構文」を使っても良さそうです。

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

mailaddress = 'メールアドレス'
password = 'アプリパスワード'

subject = 'タイトル'
text = '本文'
address_from = '送信元メールアドレス'
address_to = '送信先メールアドレス'

msg = MIMEText(text)
msg['Subject'] = subject
msg['From'] = address_from
msg['To'] = address_to
msg['Date'] = formatdate()

with smtplib.SMTP('smtp.gmail.com', 587) as smtpobj:
    smtpobj.starttls()
    smtpobj.login(mailaddress, password)
    smtpobj.send_message(msg)

Pythonからメールが送れるようになれば、Djangoと合わせて色々なサービスが作れそうです。

とはいうもののDjangoだとせっかく使ってきたWordpressとの連携ができないので、次回からはWebサービスを作るのを目標に、Javascriptを勉強していきたいと思います。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次