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を勉強していきたいと思います。
ではでは今回はこんな感じで。
コメント