如何避免谷歌邮件服务器要求我通过浏览器登录?

45

我正在尝试使用由Google Apps配置的电子邮件地址从Django发送电子邮件,我的settings.py文件中的配置看起来像这样:

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')

由于我正在使用没有图形用户界面的远程服务器,因此甚至无法尝试从浏览器登录。


1
我使用完全相同的设置(当然除了用户名/密码),并且它对我有效。您是否使用标准的Gmail地址,还是使用自己域名的Google应用程序帐户?这是我能想到可能会导致此问题的唯一事情。还要确保您的凭据是正确的。这就是链接后面的Google帮助页面告诉您要做的事情。 - Danilo Bargen
我正在使用带有自己域名的 Google 应用账号。经过几次尝试(并通过浏览器登录),它实际上在我的家庭电脑上运行良好。但是我无法从远程服务器上使其运行。 - Juan Enrique Muñoz Zolotoochin
你有按照谷歌支持链接中发布的三个谷歌审核步骤吗?(解锁验证码) - dani herrera
1
当我从家里的电脑访问这些链接时,它们只会将我重定向到电子邮件帐户。看起来我需要从出现问题的机器上访问它们,但是我无法在那台机器上访问图形界面。 - Juan Enrique Muñoz Zolotoochin
对于任何遇到配置所需的HTTP/S隧道问题的人:http://superuser.com/questions/490632/tunneling-https-traffic-via-a-putty-ssl-tunnel-with-socks - ripper234
实际解决方案 https://dev59.com/ZJTfa4cB1Zd3GeqPLAu3#43465118 - Abhishek Gupta
16个回答

0

最近,我发现可以通过确认活动是否来自我发起的请求来解决此问题,方法是访问Google Account

尽管请求来源服务器位于云端主机上,因此距离超过1000公里,但我仍需在“安全事件”下确认可疑活动确实是我本人。完成此步骤并设置较不安全的应用程序后,我能够使用IMAP或POP协议通过SSL检索我的邮件。


0

截至目前(请查看我的发布日期),Gmail帐户管理UI中只有一个“允许不安全应用程序”的切换按钮: https://myaccount.google.com/u/0/security#connectedapps

在此之后,它将可以在您的本地计算机(Mac或PC)上使用。

要允许从Amazon EC2(以及我怀疑其他云位置主机)访问,还需要设置另一个标志,这是谷歌与垃圾邮件发送者永无止境的斗争中的一部分: https://accounts.google.com/b/0/DisplayUnlockCaptcha


0

我想强调Danilo Bargen的评论

使用动态隧道(ssh -D 6789 remotehost)连接到其他网络的更简单方法是在Firefox中将localhost:6789设置为SOCKS5代理。然后您基本上就可以使用浏览器进入远程网络,而localhost是远程主机。

此外,我想补充说明,SOCKS代理方法也适用于Chrome。因此,您可以像在服务器上一样,使用本地Web浏览器登录


-1

-1

-3
在我的情况下,当我尝试通过网页登录谷歌账户时,它要求我输入验证码。我输入了验证码,然后自动化程序就可以工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接