基于EZGMAIL的谷歌邮件收发配置

前篇简述了基于 SMTP 的邮件发送功能,但是 GMAIL 在 2022.05.30 之后将不再支持 SMTP 方式的访问了

因此需要使用 oauth2.0 来登录账号,但是官方文档很多地方写的不清不楚,甚至还要申请 workspace 的账号,总觉得并不需要这么麻烦,同时又不想从头造轮子,于是找到了一个叫 ezgmail 的库

https://github.com/asweigart/ezgmail/

但跟着 readme 走完发现依旧用不了,最后在 issue 里面发现了一个 pull request 找到了更加详细的配置流程

https://github.com/asweigart/ezgmail/pull/34/commits/c6bc3cd227888730143371935a19b8879b939e5b

首先打开谷歌云的控制台(Google Cloud Console),创建一个项目(Project)

https://console.cloud.google.com/

开启 GMAIL 的 API

https://console.cloud.google.com/apis/library/gmail.googleapis.com

打开这个页面然后选择 External ,然后填写 app 名字(似乎不能太短?加点后缀就不会报错了)和联系邮箱(应该可以和当前账户不同),后面保持默认即可

https://console.cloud.google.com/apis/credentials/consent

发布app

创建一个 OAuth Client ID 然后选择类型为 Desktop App

https://console.cloud.google.com/apis/credentials

下载 JSON 文件并保管好,该文件是访问账户的秘钥

然后创建 py 文件,将 JSON 放在同一个目录下,发送邮件仅仅需要一行代码,填入收件人、标题和正文即可,首次运行会打开一个网页要求登录账号,同意之后该目录下会多一个 token.json 文件,不过执行后并不会返回发送的状态

import ezgmail

ezgmail.send('email address', 'subject', 'body')

 

有 token.json 则之后登录不再需要打开网页验证了,如果 credentials.json 和 token.json 不在同一个目录下,则可以增加下面代码进行初始化,分别填入两个文件的路径即可

ezgmail.init(tokenFile="", credentialsFile="")

 

额外参考

https://developers.google.com/identity
https://cloud.google.com/docs/authentication/getting-started
https://developers.google.com/gmail/api/guides/sending#python

 

posted @ 2022-06-22 09:17  Pyrokine  阅读(194)  评论(0编辑  收藏  举报