如何持续获取/计算Gmail发送限制

问题描述 投票:0回答:1

我正在尝试一种方法,以获取gmail / gsuite帐户在接下来的24小时内仍可以发送多少电子邮件。简而言之,我想以一种一致的方式来获取Gmail发送配额。

据我了解,发送的gmail / gsuite配额可以归纳为以下内容(不包括MailApp):

在应用程序脚本中使用GmailApp,limits are

  • [GSuite帐户的每天1500名收件人>每天[中的GSuite帐户有100至500个收件人,]
  • 每天100个收件人Gmail帐户
  • 使用“原始” Gmail Apis,limits are
  • [[GSuite帐户

每天2000条消息]
    [试用版>>中的GSuite帐户每天500条消息]
  • 每天500名收件人Gmail帐户
  • 考虑到在我的appscript实施中,我可以使用GmailApp或advanced gmail service,我如何始终如一地获得剩余的配额来展示用户并最终停止发送电子邮件?我正在沿着这两条道路行驶,但没有结果:
  • 1]在脚本中,我可以使用MailApp.getRemainingDailyQuota()但是从我的测试看来,此方法未返回实际值,而只是返回了“上次计算的”值,该值会以较长的间隔刷新(在我的测试中为8h)]这是我使用的代码:
  • function logRemainingQuota(e) { var emailQuotaRemaining = MailApp.getRemainingDailyQuota(); Logger.log("Remaining email quota now: " + emailQuotaRemaining); }

[我试图通过gmail和一些插件通过同一帐户发送电子邮件,配额从未立即减少,只是几个小时后。

2)使用gmail api messages.list计算值通过拨打以下电话,我可以在resultSizeEstimate字段中获得过去24小时内发送的电子邮件数量,或者通过简单地对消息计数即可。

curl \ 'https://www.googleapis.com/gmail/v1/users/me/messages?q=from%3Ame%20newer_than%3A1d%20in%3Aanywhere&fields=resultSizeEstimate&key=[YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compressed

查询为:from:me newer_than:1d in:anywhere但是,此值似乎不正确,并且正在返回更多数据。此外,也无法区分处于试用状态的gsuite帐户和未处于试用状态的gsuite帐户,这使得难以以可靠的方式应用计算。

总结,我有以下问题:

有没有一种方法可以用来计算/获取通过gmail发送消息(或收件人)的剩余配额数量(如果在应用脚本中则更好)?

是否有办法了解gsuite帐户是否正在试用中?

对不起,很长的帖子,谢谢您的帮助!

    ----
  • 编辑 ----
  • 所以,我已经更新了代码以对脚本执行测试:
  • function sendWithGmailApp(e) { var now = new Date(); GmailApp.sendEmail("[email protected]", "current time", "The time is: " + now.toString()); Logger.log("Gmail App used "); var emailQuotaRemaining = MailApp.getRemainingDailyQuota(); Logger.log("Remaining email quota now Gmail App: " + emailQuotaRemaining); } function sendWithGmailAPI(e) { var draft = GmailApp.getMessageById('17139fda2e54af59'); var raw = draft.getRawContent(); var message = Gmail.newMessage(); Gmail.Users.Messages.send(message, "me", Utilities.newBlob(raw, "message/rfc822")); Logger.log("Gmail Api used "); var emailQuotaRemaining = MailApp.getRemainingDailyQuota(); Logger.log("Remaining email quota now Gmail Api: " + emailQuotaRemaining); } function showquota(){ var emailQuotaRemaining = MailApp.getRemainingDailyQuota(); Logger.log("Remaining email quota now Gmail App: " + emailQuotaRemaining); }

我还制作了一个脚本副本,以便确定配额是基于用户还是基于用户/脚本。这是我的结论:* MailApp.getRemainingDailyQuota()适用于通过GmailApp发送的电子邮件*配额与GmailApp / MailApp有关,并且是基于用户的(因此其他脚本可以使用该配额)*使用GmailApi(高级服务)不会消耗此配额,因此它属于standard gmail quota。*我已经在旧版GAE引擎中进行了测试,并且可以正常工作

所以现在我的问题是,1)如果我的应用程序使用高级服务,是否可以通过gmail API预测用户的配额?2)使用高级服务,因为它基本上是包装器,所以也会影响URLFetch配额?

我正在尝试一种方法,以获取gmail / gsuite帐户在接下来的24小时内仍可以发送多少电子邮件。简而言之,我想以一种一致的方式来获取gmail发送配额。从我的...

方法MailApp.getRemainingDailyQuota()将返回与MailApp和GmailApp的使用有关的剩余配额,其限制表示为here

[创建messages.list时,响应中还包括来自视频群聊的消息,这些消息带有“ CHAT”标签。无论如何,您都可以通过“已发送”标签过滤已发送的消息。
您可能尝试使用messages.list方法来找到解决方法,问题是您不知道每个用户的配额何时刷新,如here所述:

每天限制是在连续24小时内应用的,不是固定的一天中的时间。

[如果您要尝试开发某种封闭的解决方法,则Properties类可用于使用脚本和基于时间的triggers为每个用户存储值,可能对您有用。

google-apps-script gmail-api quota
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.