【发布时间】:2016-10-12 17:01:08
【问题描述】:
我最近尝试了新的 Gmail API。除了一件事,一切似乎都很好。我的问题如下:
我正在处理一个接待员项目,该项目可能需要在繁忙时间在不到一分钟的时间内生成多封电子邮件。因此,仅出于测试目的,我运行以下代码可以正常工作:
if __name__ == '__main__':
service = setup() //Simply an helper function to do the basic credential check. Works fine!
print('service:'+str(service))
for counter in range(1, 10):
print('Sending message '+ str(counter))
message = create_message(<SENDER_EMAIL_ID>,<RECEIVER_EMAIL_ID>, "Email Number: "+ str(counter) , "Sample text")
response = send_message(service, 'me' , message)
print(response)
setup()函数如下:
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
现在,当我在不到一分钟的时间内连续运行三次代码时,代码运行良好,我可以使用 Web 浏览器查看 SENDER_EMAIL_ID 的已发送文件夹中的所有 27 封电子邮件。因此,无论何时发出请求,Gmail API 都会发送所有消息。但是,在 RECEIVER_EMAIL_ID 上只收到了其中一些电子邮件,其余的只是被丢弃。
但是,如果我延迟 2-5 分钟运行程序,那么所有邮件都会收到。
我不知道这是为什么。
任何帮助将不胜感激。 :)
【问题讨论】:
-
我可以想象 API 正在应用某种软速率限制,所以我建议将调用
send_message()时给出的response与稍后的response进行比较拨打get_message(),并查看立即发送、延迟和丢弃电子邮件之间的响应有何不同。 -
很抱歉我应该提到。我正在使用浏览器直接检查收到的邮件。所以我只是使用 send_message()。此外,我对发送的每个查询的响应如下:
Sent Message: {u'labelIds': [u'SENT'], u'id': u'157bce1438e5db28', u'threadId': u'157bce1438e5db28'} -
所以,您的回复没有错误,它为循环中的所有项目返回Users.messages resource,但收件人只收到了一些?另外,“丢弃”是什么意思 - 发送失败?
-
我会检查 User.messages.resource。但是我所说的“丢弃”是指在当前运行代码的终端和使用浏览器发送的SENDER_EMAIL_ID的邮箱中发送操作成功。但是,使用浏览器访问的 RECEIVER_EMAIL_ID 的收件箱不会反映这些电子邮件。
标签: python-2.7 gmail-api