在Python中通过Gmail API发送大型电子邮件
问题描述:
最近Google禁用了其“传统”上传功能,因此我不得不更改我们的应用程序以使用Google用户()。messages()。send api。在Python中通过Gmail API发送大型电子邮件
然而,它不适用于超过5MB的任何东西。我在www上看到过一篇关于如何在PHP中完成的文章,但在Python中没有。
这里是我现有的代码:
http = #My login routine
service = build('gmail','v1',http=http)
email = {'raw':base64.urlsafe_b64encode(message)}
reply = (service.users().messages().send(userId=user,body=email).execute())
谷歌有大量的文档,但不能发送电子邮件,大型Python中的具体能力。事实上,在此页:
https://developers.google.com/gmail/api/v1/reference/users/messages/send
他们谈论使用基本的API,以大发送消息为35MB,但根本不起作用。我收到“ResponseNotReady()”错误。
我一直在阅读关于分块上传,可恢复上传,但没有任何成果。
有什么想法吗?
答
我有同样的问题two years ago,我仍然认为用大附件发送消息的唯一方法是绕过官方客户端库。
这是使用requests库,而不是一个例子:
url = 'https://www.googleapis.com/gmail/v1/users/me/messages/send?uploadType=multipart'
headers = {
'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'message/rfc822'
}
requests.post(url, headers=headers, payload=message)
该消息不被编码。我认为你可以从服务对象中提取访问令牌,但我不确定如何。
我有同样的问题[两年前](http://stackoverflow.com/questions/24908700/mail-attachment-wrong-media-type-gmail-api/24957873#24957873),我不得不去在官方客户端库之外(请参阅答案末尾的编辑)。简而言之:不要对邮件进行编码,而是使用Content-Type“message/rfc822”的简单上传URL。 – Tholle
关于能够从Python中执行URL格式的想法吗? – AaronF