【问题标题】:Get unread message count from delegated maibox从委派邮箱中获取未读邮件数
【发布时间】:2013-11-25 14:51:05
【问题描述】:

我正在寻找一种方法来查找来自任何 Google API 的委派邮箱的未读邮件计数。

我不确定这是否可能,但它会帮助我为一家公司开发一个帮助工具,为 1000 多个用户使用它。很多委托正在进行中,我渴望找到一种方法来完成这项工作。

但我可能需要一些帮助,也许是了解 Google Admin SDK 可能性的人的帮助。

我想使用 Google Apps 脚本来收集未读消息数。

【问题讨论】:

    标签: google-apps-script google-admin-sdk


    【解决方案1】:

    电子邮件设置 API 允许您see which delegations are in place

    用户无法通过 IMAP 访问已委托他们访问的其他用户的邮箱,因此您无法以用户身份验证并检查委托邮箱。

    您应该使用 OAuth 2.0 服务帐户来authenticate to the mailboxes via IMAP

    通过身份验证后,您可以选择 Gmail“所有邮件”文件夹(如果您只想计算收件箱,则可以选择收件箱)。并执行Gmail search of "is:unread" 来确定用户有多少未读消息。

    仅供参考,我的open-source 应用程序,GYB 可以做到这一点。有一个getting started guide for GYB。您还需要setup the service account。获取所有邮件的未读邮件计数的命令类似于:

    gyb --email delegated-mailbox@yourcompany.com --service-account your-service@account.com --action count --search "is:unread"
    

    【讨论】:

    • 谢谢,这就是方向。我忘了提一件事:我想用 Google Apps Script 来做...
    • 我不知道有任何方法可以使用 Google Apps 脚本实现此目的。
    【解决方案2】:

    我的答案来自 Google Plus 上的 GAS 社区,因此感谢那里的海报。

    https://plus.google.com/106333172328928589411/posts/7g3Vu7iFZfb

    塞尔吉: 查看这个 gist,它展示了如何在 GAS https://gist.github.com/rcknr/c5be4eb80d821158c8ef 中进行 2-legged OAuth 身份验证。

    使用 2 Legged Oauth,您可以访问其他用户的 ATOM 提要:

    一段工作代码:

    function gmail2lo(user) {
     var OAUTH_CONSUMER_SECRET = 'secret';
      var domain = 'domain'; //use the domain as key in apps panel
      var username = 'user';
      var xuser = username+'@'+domain;
      var method = "GET";
      var baseUrl = "https://mail.google.com/mail/feed/atom";
    
      var timestamp = Math.round(new Date().getTime() / 1000);  
    
      var paramsJson;
      var paramsOauth = {
        oauth_consumer_key : domain,
        oauth_nonce : timestamp,
        oauth_signature_method : "HMAC-SHA1",
        oauth_timestamp : timestamp,
        oauth_version : "1.0",
        'xoauth_requestor_id' : xuser
      };
    
      var paramsStringArray =  [];
      for (var k in paramsJson)
        paramsStringArray.push(k + '=' + encodeURIComponent(paramsJson[k]));
    
      var oauthStringArray = [];  
      for (var k in paramsOauth)
        oauthStringArray.push(k + '=' + encodeURIComponent(paramsOauth[k]));
    
      var paramsString = paramsStringArray.concat(oauthStringArray).sort().join('&');
      var signatureBaseString = method +"&"+ encodeURIComponent(baseUrl) +"&"+ encodeURIComponent(paramsString);
      var signatureBytes = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_1, signatureBaseString, OAUTH_CONSUMER_SECRET+'&');
      var signature = encodeURIComponent(Utilities.base64Encode(signatureBytes));
    
      var xoauthString = 'OAuth ' + oauthStringArray.sort().slice(0,oauthStringArray.length-1).join(", ") + ', oauth_signature=' + signature;
    
      var ooptions = {
        headers : {authorization: xoauthString}
      }
    
      url  = baseUrl;
      url += "?" + paramsStringArray.join("&") + '&xoauth_requestor_id=' + encodeURIComponent(xuser);
    
      var response = UrlFetchApp.fetch(url, ooptions).getContentText();
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 2020-05-30
      • 2012-11-27
      • 2020-10-25
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2014-04-19
      相关资源
      最近更新 更多