我怎样才能避免谷歌邮件服务器要求我通过浏览器login?

我正尝试使用Google Appsconfiguration的电子邮件从Django发送电子邮件,我在settings.py文件中的configuration如下所示:

 EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'contact@mydomain.com' EMAIL_HOST_PASSWORD = 'password' EMAIL_PORT = 587 EMAIL_USE_TLS = True 

当我尝试使用以下方式发送电子邮件时:

 from django.core.mail import send_mail send_mail("Happy new year", "We wish you the best for 3001", "contact@mydomain.com", ["someuser@gmail.com"]) 

我得到以下错误:

 SMTPAuthenticationError: (535, '5.7.1 Please log in with your web browser and then try again. Learn more at 5.7.1 https://support.google.com/mail/bin/answer.py?answer=78754 k2sm758604obl.14') 

由于我在没有graphics用户界面的远程服务器上工作,我甚至不能尝试从浏览器login。

只需转到: https : //accounts.google.com/DisplayUnlockCaptcha

并点击继续这将允许从其他服务器访问。

在黄瓜/水豚/seleniumtesting中,我已经搞了几个小时 – 发现了一些愚蠢的东西,可以很好的解决这个错误,保证

这个太熟悉的错误:

 Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure) (Net::IMAP::NoResponseError) 

事实certificate, 有两个“允许不太安全的应用程序”切换 ,需要更改以允许来自未知设备/ IMAP的login。

一个在这里 : https : //myaccount.google.com/security?pli= 1# connectedapps (页面底部)

还有一个 : https : //www.google.com/settings/security/lesssecureapps

这两个GODFORSAKEN TOGGLES都需要改变,摆脱这个错误信息。

编辑:从用户Milothicus( https://stackoverflow.com/users/3538026/milothicus ):在myaccount.google.com,在“login和安全”下,select“连接的应用程序和网站”。 这也可以select“允许不太安全的应用程序”。 打开这个之后,我的服务器现在可以发送给我一个自动邮件。

当我尝试访问我的帐户时,我发送了包含此链接的电子邮件。 https://www.google.com/settings/security/lesssecureapps

完成testing后,您可以打开,然后可能closures。

我收到了Google Apps支持的以下回复:

您需要打开您的出站中继。 去做这个:

  1. 通过google.com/a/yourdomain.comlogin到您的帐户
  2. 点击设置标签,然后select左侧栏中的电子邮件。
  3. 在“出站中继”部分中,select允许用户在configuration域外托pipe的“发件人”地址时通过外部SMTP发送邮件。
  4. 点击保存更改。

他们还提供了一个帮助链接: http : //support.google.com/a/bin/answer.py?hl = zh_CN&answer = 176054

打开出站中继并使用代理login到webmail一次(感谢@DaniloBargen和@joshcartme),问题已解决。 我已经阅读了解释什么是出站接力的链接,我不太确定为什么我需要它(我不相信我正在使用外部SMTP服务器)。

由于我不确定这是什么解决了这个问题,我不会标记的答复被接受,直到我得到一些确认。

设置一个到服务器的ssh隧道,以便您可以从家用计算机使用服务器的IPlogin到gmail Web客户端。 您可能需要隧道端口80和端口443,也许只是443.通过Web客户端login后,问题应根据SMTPAuthenticationError中列出的知识库文章而消失。

以下是如何设置隧道的示例: http : //www.noah.org/wiki/SSH_tunnel#simple_port_forwarding_.28SSH_tunneling.29

选项#1(这为我工作):

得到错误后Please log in with your web browser and then try again. Learn more etc. 尝试从我的Web应用程序发送电子邮件时,请通过本地计算机上的浏览器login到电子邮件,以Please log in with your web browser and then try again. Learn more etc.

login后,上面有一个黄色的通知栏,询问我是否允许外部应用程序访问我的邮件。 我证实了这一点,Google要求我在接下来的10分钟内从应用程序login帐户。 这将白名单应用程序。

选项#2:

如果选项#1不适用于您,请尝试以下操作: http ://www.rocketideas.com/2012/05/gmail-error-password-not-accepted-from-server-solved/

etusm提供了两个位置来打开不太安全的应用程序:

一个在这里: https : //myaccount.google.com/security?pli= 1# connectedapps (页面底部)

还有一个: https : //www.google.com/settings/security/lesssecureapps

两个都打开了,但我的无头服务器仍然无法给我发电子邮件。 基于JohnPang的google +推荐,我发现了第三个位置,我不得不允许访问安全性较低的应用:

在myaccount.google.com的“login和安全”下,select“关联的应用和网站”。 这也可以select“允许不太安全的应用程序”。 打开这个之后,我的服务器现在可以发送给我一个自动邮件。

我在https://support.google.com/accounts/answer/185833?hl=zh-CN和https://security.google.com/settings/security/apppasswordsfind了解决scheme

如果您正在本地机器上testing您的项目,则应该转到后一个链接,并启用“访问不太安全的应用程序”。

您是否为应用程序帐户启用了两项身份validationfunction? 那么您可能需要为该应用程序使用特定于应用程序的密码。

以上所有都不利于我的情况(奇怪)。 但是这个链接可能会帮助你:

https://security.google.com/settings/security/activity

您可以通过Google Plus访问它

  1. 打开Goog​​le+
  2. 从顶部select“安全”
  3. 在“最近的活动”下点击“查看所有事件”
  4. 你会看到一个“不寻常的活动”
  5. 它显示“申请/设备login尝试(阻止)新加坡”,因为我使用新加坡的AWS
  6. 点击“更改”>“是的,就是我!”
  7. 再试一次。 完成!

这是由于一些应用被谷歌标记为安全性较低的应用。 所以要使用这些应用程序,您需要为这些应用程序提供访问权限。 遵循http://www.codematrics.com/your-imap-server-wants-to-alert-you-to-the-follow-please-login-via-your-web-browser-gmail/

希望这将解决您的问题。

截至目前(查看我的发布date),Gmail帐户pipe理界面中只有一个“允许安全性较低的应用”切换: https : //myaccount.google.com/u/0/security#connectedapps

之后,它将从您的本地计算机 (Mac或PC)工作。

为了允许从Amazon EC2访问(我怀疑其他云端主机),还有另外一个标志可以在Google与垃圾邮件发送者的永无止境的战斗中设置: https : //accounts.google.com/b/0/DisplayUnlockCaptcha

在我的情况下,当我试图通过networkinglogin到谷歌帐户,它问我一个validation码。 我进入validation码,然后自动工作。