使用client.discovered_api('gmail', 'v1'),我正在使用该gmail.users.messages.send功能发送电子邮件
它可以很好地发送我的消息,但是当超过电子邮件的配额时,没有错误.
我收到200 OK,一切都很好看.
"id": "15289b1d6b652c17", "threadId": "15289b1d6b652c17","labelIds": ["SENT"]
Run Code Online (Sandbox Code Playgroud)
但对于配额以上的每条消息,我收到一封来自Bounce的电子邮件(nobody@gmail.com)告诉我:
您已达到发送邮件的限制.
这个页面说我应该收到429 error code,但我没有收到.
什么可能出错?或者,如果有办法查询配额?
编辑:经过调查,即使收到来自任何人的电子邮件告诉我已达到配额,仍然会发送原始电子邮件(这意味着可以以接收许多无人电子邮件为代价来超过配额).
Edit2:我在他们的API页面上报告了一个问题,但仍然没有听到任何人的任何消息.缺乏回应令人困惑.
编辑3:原来他们的解决方案刚刚被设计破坏了.更新配额有延迟(可能超过30分钟......您可以在30分钟内发送大量电子邮件),因此它允许您发送并在告知您的用户之后您的消息未发送(虽然它可能有,但我做了测试.完全不可靠.弹跳中没有信息可以确定哪些消息实际被拒绝.当您代表用户发送100封电子邮件广告系列时,这不起作用.
经过1个多月的等待,终于有了答案。
“我与 Gmail API 工程团队进行了交谈,不幸的是,这正在按预期工作。Gmail 配额不是在 Messages.send() 请求的范围内计算的,而是在电子邮件进入我们的发送管道时异步计算的。配额状态用户的信息将在整个系统中同步,并且您将收到 429 错误,但是在配额用完和 API 意识到之间有很短的时间。您可以扫描收件箱中是否有退回邮件,但事实并非如此一个很好的解决方法。一般来说,我认为您应该假设发送电子邮件是尽力而为,并且您的应用程序不能假设 200 响应意味着消息已成功发送。我们将更新文档以明确这一点。”
这有多愚蠢?我又恢复通过 SMTP 发送,至少您可以立即收到回复,并且用户不会在收件箱中收到神秘的配额消息。
编辑:这已更新为“不会修复”,他们只更新了文档。完全迟钝了。
“邮件发送管道很复杂:一旦用户超出配额,API 开始返回 429 错误响应之前可能会延迟几分钟。因此,您不能假设 200 响应意味着电子邮件已成功发送。”
| 归档时间: |
|
| 查看次数: |
1102 次 |
| 最近记录: |