OAuth 2 を使用してユーザーとしてメールを送信しようとしています。Google の Web サイトでは、次のように述べられています。
このドキュメントでは、IMAP AUTHENTICATE および SMTP AUTH コマンドで使用する SASL XOAUTH2 メカニズムを定義します。このメカニズムにより、OAuth 2.0 アクセス トークンを使用してユーザーの Gmail アカウントを認証できます。
で提供されているテストの使用oauth2.py
smtp_conn = smtplib.SMTP('smtp.gmail.com', 587)
smtp_conn.set_debuglevel(True)
smtp_conn.ehlo('test')
smtp_conn.starttls()
smtp_conn.docmd('AUTH', 'XOAUTH2 ' + base64.b64encode(auth_string))
提供されたアクセストークンを使用してSMTPサーバーに接続できるかどうかをテストできますが、成功しますが、使用して電子メールを送信しようとするとsendmail
失敗します.
追加smtp_conn.sendmail('from@test.com', 'to@test.com', 'msg')
すると、認証する必要があると表示されます。
AUTH
ドキュメントから、必要な認証文字列を使用してコマンドを送信すると、認証されませんか?
ありがとう。
更新*
したがって、try catch ステートメントのキャッチで再認証すると、うまくいくようです。
try:
smtp_conn.sendmail('fromt@test.com', 'to@test.com', 'cool')
except:
smtp_conn.docmd('AUTH', 'XOAUTH2 ' + base64.b64encode(auth_string))
smtp_conn.sendmail('from@test.com', 'to@test.com', 'cool')