【Python】メールサーバーとの通信方法

このエントリーをはてなブックマークに追加
python
Python
ースポンサーリンクー

メールサーバーに接続する

SMTPサーバーからメールを送信するには、通常、暗号化通信を開始した状態で認証を行う必要がある。
具体的には、メール送信するまでに次の5つのタスクを実行。

  1. 「SMTPサーバーのアドレス」と「ポート番号」を指定する
  2.  暗号化通信(STARTTLS)を開始する
  3.  SMTPサーバーにログインする
  4.  メッセージを送信する
  5.  SMTPサーバーとの接続を閉じる
import smtplib
# ①SMTPサーバーの指定
server = smtplib.SMTP(SMTPサーバーのアドレス、ポート番号)
# ②暗号化通信の開始
server.starttls()
# ③SMTPサーバーにログイン
server.login(アカウント、パスワード)
# ④メッセージ送信(メッセージmsgの作成方法は、次節で説明)
server.send_message(msg)
# ⑤SMTPサーバーとの接続を閉じる
server.quit()

・メッセージを送信するには、ログインまでが無事に完了している必要がある

SMTPサーバーにPythonでログインできるかを次のコードでテスト

・利用者の多いGmailでSMTPサーバーにログインする
・SMTPサーバーのアドレスには「smtp.gmail.com」、ポート番頭には「587」を指定
・ログインのアカウントには「自分のGmailアドレス(XXXX@mail.com)」、パスワードには「自分のGmailパスワード」を使用
・15行目のnoop()はSMTPサーバーが応答しているか確認するための命令

import smtplib
# SMTPサーバー(今回はGmailで送信)
smtp_server = "smtp.gmail.com"
port_number = 587
# ログイン情報(今回はGmailのアカウントを入力する)
account = "自分のメールのアカウント"
password = "自分のメールのパスワード"
# ①SMTPサーバーの指定
server = smtplib.SMTP(smtp_server, port_number)
# SMTPサーバーの応答確認
res_server = server.noop()
print(res_server)
# ②暗号化通信の開始
res_starttls = server.starttls()
print(res_starttls)
# ③SMTPサーバーにログイン
res_login = server.login(account, password)
print(res_login)
# ⑤SMTPサーバーとの接続を閉じる
server.quit()

結果

エラー・・・Why!?😱
f:id:Moriane:20220403170010p:plain

でも、Gmailのアドレスに「不審なアクセスありました」という通知が来ていたから、プロセスは間違ってなかったっぽい!
設定上の問題だろう・・・
⇨エラーメッセージに書いてあるリンク先に飛んで、Gmailヘルプの「安全性の低いアプリがアカウントにアクセスすることを許可(怖いけど)」をしたところ、ちゃんと受け入れが完了しました🎶f:id:Moriane:20220404164156p:plain

もちろん実証が終わったら、許可は解除しました!

ちなみに、2段階認証設定にして、アプリ パスワードを使ってログインをする方法もあるらしい。こっちの方が安全っぽいっすね

次はメールで送るメッセージを作成してみます!

【Python】メールで送るメッセージを作成する
メッセージ作成に必要なモジュールのインポート 以下のモジュールをインポート! これらのモジュールは標準ライブラリにあるので、インストールの必要はない from email.mime.multipart import MIMEMultiparRead more...

参考文献

コメント

タイトルとURLをコピーしました