学習めも。

Python、Anaconda学習中🔰 ブログ引っ越ししました😄よろしくお願いします!https://noeiganolife.com/

記録用🔰

プログラミング以外の記事はこちら

メールサーバーとの通信方法

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

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

① 「SMTPサーバーのアドレス」と「ポート番号」を指定する
② 暗号化通信(STARTTLS)を開始する
SMTPサーバーにログインする
④ メッセージを送信する
SMTPサーバーとの接続を閉じる

import smtplib

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

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

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

・利用者の多いGmailSMTPサーバーにログインする
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段階認証設定にして、アプリ パスワードを使ってログインをする方法もあるらしい。こっちの方が安全っぽいっすね

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

yoji.hateblo.jp

参考文献