1. ホーム
  2. パイソン

[解決済み】Pythonを使ってGmailをプロバイダにしたメールを送信するには?

2022-03-28 22:52:29

質問

Pythonを使ってメール(Gmail)を送信しようとしているのですが、以下のエラーが発生します。

Traceback (most recent call last):  
File "emailSend.py", line 14, in <module>  
server.login(username,password)  
File "/usr/lib/python2.5/smtplib.py", line 554, in login  
raise SMTPException("SMTP AUTH extension not supported by server.")  
smtplib.SMTPException: SMTP AUTH extension not supported by server.

Pythonスクリプトは以下の通りです。

import smtplib
fromaddr = '[email protected]'
toaddrs  = '[email protected]'
msg = 'Why,Oh why!'
username = '[email protected]'
password = 'pwd'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

解決方法は?

以下のように記述する必要があります。 EHLO を実行する前に STARTTLS :

server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()


また From: , To:Subject: メッセージヘッダは、メッセージボディと空白行で区切られ CRLF をEOLマーカとする。

msg = "\r\n".join([
  "From: [email protected]",
  "To: [email protected]",
  "Subject: Just a message",
  "",
  "Why, oh why"
  ])

この機能を使用するには、Gmail アカウントの設定で "安全性の低いアプリを許可する" オプションを有効にする必要があります。そうしないと、Google 以外のアプリがあなたのアカウントにログインしようとしていることを gmail が検出したときに、quot;critical security alert" が表示されることになります。