我在访问 Gmail 帐户时遇到问题。目前,我正在使用 this用 python 2.7+ 编写的库,用于登录和阅读 Gmail 邮件。要使用该库,我必须启用 Google“不安全的应用程序”。这个库一切正常。
现在,我要迁移到 python 3+,我不能再使用该库了。每当我导入库时,它都会抛出以下错误:
import gmail
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.6/site-packages/gmail-0.0.5-py3.6.egg/gmail/__init__.py", line 16, in <module>
File "/usr/local/lib/python3.6/site-packages/gmail-0.0.5-py3.6.egg/gmail/gmail.py", line 5, in <module>
ModuleNotFoundError: No module named 'utf'
我试图通过查看 python 3+ 中“utf”的替换模块来解决这个问题,但我无法弄清楚它是什么。我该如何解决?
另一个问题是我尝试了谷歌提供的官方python库。 Here是教程的链接。我成功完成了快速入门示例,但脚本打开了我的浏览器,我必须允许通过浏览器进行访问。事实上,我只是想创建一个 cronjob 以在没有 UI 的情况下在我的服务器上定期运行我的脚本。 Google 允许吗?
非常感谢。
请您参考如下方法:
适用于 python 3 的 Gmail 官方 API 并且有很多使用指南,例如:
https://github.com/abhishekchhibber/Gmail-Api-through-Python
但如果您觉得这太复杂(我也这么认为),您可能想从 Gmail 设置面板中使用 POP3 或 IMAP 激活访问。
然后使用 poplib 或 imaplib。
示例:https://docs.python.org/3/library/poplib.html#pop3-example
这通常更容易、更便携,并且使用默认 python 安装中已经找到的包。
编辑:
您使用的库使用的是 IMAP 访问,而不是 oauth。
同时回答你的“UTF”问题:python 3中的每个字符串默认都是UTF8,如果你想解码原始数据,你应该使用'mystring'.decode('utf-7')等。
编辑 2:看起来有人已经完成了这项工作:https://github.com/charlierguo/gmail/pull/48
好的,我刚刚在the instructions中看到了问题:
所以,我猜你唯一的选择就是坚持使用 POP3/IMAP(你的程序已经在使用它)。
