使用GMail API发送时,如何检测发送配额?

时间:2016-01-28 22:42:54

标签: gmail-api

使用 @Override protected void onStop() { super.onStop(); NotificationCompat.Builder Nbuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("Where you gone?") .setContentText("We miss you, Come back!") .setWhen(60000); int NbuilderId = 1; NotificationManager mNotifyMngr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); mNotifyMngr.notify(NbuilderId,Nbuilder.build()); } ,我正在使用client.discovered_api('gmail', 'v1')功能

发送电子邮件

它可以很好地发送我的邮件,但是当超过电子邮件的配额时,就没有错误。

我收到200 OK,一切都很好。

gmail.users.messages.send

但对于配额以上的每封邮件,我收到一封来自Bounce的电子邮件(nobody@gmail.com)告诉我:

  

您已达到发送邮件的限制。

This page说我应该收到"id": "15289b1d6b652c17", "threadId": "15289b1d6b652c17","labelIds": ["SENT"] ,但我没有收到。

知道什么可能出错吗?或者,如果有办法查询配额?

修改:经过调查,即使收到来自任何人的电子邮件,告诉我已达到配额,仍会发送原始电子邮件(这意味着可以超过配额,但会收到许多人的费用)电子邮件)。

Edit2 :我在API page报告了一个问题,但仍然没有听到任何人的任何消息。缺乏回应令人困惑。

编辑3 :原来他们的解决方案刚刚被设计破坏了。更新配额有延迟(可能超过30分钟......您可以在30分钟内发送大量电子邮件),因此它允许您发送并在告知您的用户之后您的消息未发送(虽然它可能有,但我做了测试。完全不可靠。弹跳中没有信息可以确定哪些消息实际被拒绝。当您代表用户发送100封电子邮件广告系列时,这不起作用。

2 个答案:

答案 0 :(得分:4)

等待超过1个月后的answer

"我与Gmail API工程团队进行了交谈,不幸的是,这是按预期工作的。 Gmail配额不会在Messages.send()请求的范围内计算,而是在电子邮件进入我们的发送管道时异步计算。用户的配额状态将在整个系统中同步,您将收到429个错误,但配额用完且API已实现错误的时间很短。 您可以扫描收件箱中的退回邮件,但这不是一个很好的解决方法。一般来说,我认为您应该假设发送电子邮件是最好的,并且您的应用程序不能假设200响应意味着消息已成功发送。 我们会更新文档以明确这一点。"

那有多愚蠢?我回到通过SMTP发送,至少您立即收到回复,用户不会在收件箱中收到神秘的配额邮件。

编辑:这已更新为"无法解决",他们只更新了文档。完全迟钝了。

"邮件发送管道很复杂:一旦用户超出配额,API开始返回429错误响应之前可能会有几分钟的延迟。因此,您不能假设200响应意味着电子邮件已成功发送。"

答案 1 :(得分:0)

根据Google电子邮件发送限制,Gmail API会每日执行标准mail sending limits(这些限制因付费Google Apps用户与免费gmail.com用户而异。)

如果您超出了Google Apps电子邮件限制,您可能会看到错误消息:

  • 您已达到发送电子邮件的限制
  • 您达到了Gmail发送限制
  • 您超出了最大收件人数

要验证您的配额使用情况,检查您是否已超出配额限制或请求更多配额的最简单方法是Developer Console