メールサーバーに接続する
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でログインできるかを次のコードでテスト
・利用者の多い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!?😱
でも、Gmailのアドレスに「不審なアクセスありました」という通知が来ていたから、プロセスは間違ってなかったっぽい!
設定上の問題だろう・・・
⇨エラーメッセージに書いてあるリンク先に飛んで、Gmailヘルプの「安全性の低いアプリがアカウントにアクセスすることを許可(怖いけど)」をしたところ、ちゃんと受け入れが完了しました🎶
もちろん実証が終わったら、許可は解除しました!
ちなみに、2段階認証設定にして、アプリ パスワードを使ってログインをする方法もあるらしい。こっちの方が安全っぽいっすね
次はメールで送るメッセージを作成してみます!
【Python】メールで送るメッセージを作成する
メッセージ作成に必要なモジュールのインポート 以下のモジュールをインポート! これらのモジュールは標準ライブラリにあるので、インストールの必要はない from email.mime.multipart import MIMEMultiparRead more...
参考文献
¥2,398 (2024/11/29 18:34時点 | 楽天市場調べ)
ポチップ
コメント