[英]Send a email through googleapi gmail python using oauth2
我正在嘗試使用OAuth 2以用戶身份發送電子郵件。在Google的網站上, 他們聲明 :
本文檔定義了與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字符串的AUTH
命令時,我沒有進行身份驗證?
謝謝。
更新*
顯然,如果我在try catch語句的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')
在starttls之后你需要另一個ehlo調用。 所以:
smtp_conn = smtplib.SMTP('smtp.gmail.com', 587)
smtp_conn.set_debuglevel(True)
smtp_conn.ehlo()
smtp_conn.starttls()
smtp_conn.ehlo()
smtp_conn.docmd('AUTH', 'XOAUTH2 ' + base64.b64encode(auth_string))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.