谷歌正在推动我们提高gmail smtp服务器脚本访问的安全性。我没意见。事实上我很乐意帮忙。
但他们不容易做到。建议我们Upgrade to a more secure app that uses the most up to date security measures
是很好的,但这并不能帮助我解决如何升级如下代码的问题:
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
server.login(GMAIL_USER, GMAIL_PASSWORD)
server.sendmail(FROM, TO, MESSAGE)
server.close()
当然,我会打开“访问不太安全的应用程序”,但如果有人想出了用什么来替换这段代码,我将不胜感激。
这很痛苦,但我现在好像有点事。。。
还不支持Python3
我不认为这太难实现,因为我在转换包时遇到了障碍,没有碰到任何大的问题:只有通常的2to3东西。但几个小时后,我厌倦了逆流而上游泳。在撰写本文时,我找不到Python 3的公开使用包。python 2的体验是直截了当的(相比之下)。
浏览谷歌网站是成功的一半
毫无疑问,随着时间的推移,这种情况将会改变。最终,您需要下载一个
client_secret.json
文件。您只能(可能)通过web浏览器进行设置:API's and Auth
->;Credentials
OAuth
下选择Create New Client ID
Installed Application
作为应用程序类型,选择其他Download JSON
。做那件事。这是你的client_secret.json
-可以说是密码但等等,还不止这些!
你必须给你的申请一个“产品名”,以避免一些奇怪的错误。(看看我为给你这个付出了多少;-)
API's & auth
->;Consent Screen
新闻快报!哇哦。现在还有更多!
是的。现在我们可以更新电子邮件脚本。
Python2
您需要在第一次以交互方式运行脚本。它将在您的计算机上打开一个web浏览器,您将授予权限(单击按钮)。此练习将向您的计算机保存一个包含可重用令牌的文件
gmail.storage
。[我没有运气将令牌转移到没有图形浏览器功能的机器上返回HTTPError。我试着通过lynx图形浏览器来浏览。这也失败了,因为谷歌已经将最后的“接受”按钮设置为“禁用”!?我会提出另一个问题来跳过这个障碍(更多的抱怨)]
首先,您需要一些库:
Storage
指令要求它gmail.storage
文件最后是一些代码:
希望这能让我们都开始。不像以前那样简单,但现在看起来确实不那么复杂了,我可以从肉体上看出来。
你考虑过使用Gmail API吗?该API具有内置的安全特性,并专门针对Gmail进行了优化。可以在http://developers.google.com上找到API文档-例如,下面是Send API调用的文档:
https://developers.google.com/gmail/api/v1/reference/users/messages/send
约翰·米的回答似乎过时了。 2016年7月不起作用。 可能是因为Gmail的API更新。 我更新了他的代码(python 2),如下所示:
注意,如果遇到错误
Insufficient Permission
,一个可能的原因是程序中的范围设置不正确。 另一个可能的原因可能是您需要删除存储json文件(“sendmail.json”在此程序中)并刷新您的程序。更多的细节可以在这个post中看到。相关问题 更多 >
编程相关推荐