批量请求 - SendAs 电子邮件

2023-12-09

有没有办法执行批量请求以获取来自多个或所有用户的 SendAs 电子邮件?

目前,我们正在使用具有用户模拟功能的服务帐户来遍历每个用户并获取 SendAs 电子邮件列表 - 很多请求。

  1. GmailService 作为服务 - 模拟为用户。
  2. service.Users.Settings.SendAs.List("me").Execute();

附:我在谷歌群组中发布了此内容,但刚刚阅读了一篇帖子,说该论坛现在是只读的!奇怪的是它允许我发表新帖子(显然我认为该帖子必须获得批准)

Thanks!

    static string[] Scopes = {  GmailService.Scope.MailGoogleCom,
                                GmailService.Scope.GmailSettingsBasic,
                                GmailService.Scope.GmailSettingsSharing,
                                GmailService.Scope.GmailModify};

    /// <summary>
    /// Gets default send as email address from user's gmail - throws error if valid domain is not used as default sendAs
    /// </summary>
    /// <param name="primaryEmailAddress">User's email address to use to impersonate</param>
    /// <param name="excludedDomains">Domains to exclude in the results - example: @xyz.org</param>
    /// <returns>default SendAs email address</returns>
    public static string GetDefaultSendAs(string primaryEmailAddress, string[] excludedDomains)
    {
        string retVal = string.Empty;
        GmailService service = new GmailService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = 
                Auth.GetServiceAccountAuthorization
                    (scopes: Scopes, clientSecretFilePath: Constant.ClientSecretFilePath, impersonateAs: primaryEmailAddress)
        });


        var result = service.Users.Settings.SendAs.List("me").Execute();

        SendAs s = result.SendAs.First(e => e.IsDefault == true);
        bool incorrectSendAs = false;

        if (s != null)
        {
            foreach (string domain in excludedDomains)
            {
                // Check if email ends with domain
                if (s.SendAsEmail.ToLower().EndsWith("@" + domain.TrimStart('@'))) // removes @ and adds back - makes sure to domain start with @.
                {
                    incorrectSendAs = true;
                }
            }             
        }

        if (s != null && !incorrectSendAs)
            retVal = s.SendAsEmail;
        else
            throw new Exception($"{primaryEmailAddress}, valid default SendAs email not set."); 

        System.Threading.Thread.Sleep(10);

        return retVal;
    }

授权码:

class Auth
{
    internal static ServiceAccountCredential GetServiceAccountAuthorization(string[]scopes, string clientSecretFilePath, string impersonateAs = "[email protected]")
    {
        ServiceAccountCredential retval;

        if (impersonateAs == null || impersonateAs == string.Empty)
        {
            throw new Exception("Please provide user to impersonate");
        }
        else
        {

            using (var stream = new FileStream(clientSecretFilePath, FileMode.Open, FileAccess.Read))
            {
                retval = GoogleCredential.FromStream(stream)
                                             .CreateScoped(scopes)
                                             .CreateWithUser(impersonateAs)
                                             .UnderlyingCredential as ServiceAccountCredential;
            }
        }

        return retval;
    }

API client access: API client access


批处理注意事项

首先我要问你为什么要使用批处理。如果您希望它能节省配额使用量,则批处理不会受到与普通 api 调用相同的配额使用量的影响。批处理给您带来的唯一帮助是发送更少的 HTTP 调用,并且花费一些时间。

客户端建立的每个 HTTP 连接都会产生一定量的开销。一些 Google API 支持批处理,允许您的客户端将多个 API 调用放入单个 HTTP 请求中。

外部批处理请求的 HTTP 标头(除了 Content- 标头(例如 Content-Type))适用于批处理中的每个请求。如果您在外部请求和单个调用中都指定了给定的 HTTP 标头,则单个调用标头的值将覆盖外部批量请求标头的值。单个呼叫的标头仅适用于该呼叫。

例如,如果您提供特定调用的授权标头,则该标头仅适用于该调用。如果您为外部请求提供授权标头,则该标头适用于所有单独的调用,除非它们用自己的授权标头覆盖它。

授权

当您向 api 授权时,该授权是针对单个用户的。

GmailService service = new GmailService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = 
            Auth.GetServiceAccountAuthorization
                (scopes: Scopes, clientSecretFilePath: Constant.ClientSecretFilePath, impersonateAs: primaryEmailAddress)
    });

上述服务将只能访问您所模拟的用户的数据。

Anwser

有没有办法执行批量请求以获取来自多个或所有用户的 SendAs 电子邮件?

不,那里没有。正如您从上面可以看到的,批量请求的授权标头涵盖了该批次中的所有项目。使用 GmailService 为批量请求发送的授权标头仅覆盖单个用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批量请求 - SendAs 电子邮件 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • Android + PhoneGap + jQuery Mobile 上的水平滚动图像

    我正在开发一款适用于 Android 和 iPhone 的应用程序 该应用程序使用 jQuery Mobile 完成并使用 Phonegap 进行编译 有时在应用程序中用户可以显示图像 该图像非常大 并且需要可滚动 我已经完成了一段 Jav
  • HttpWebRequest 有效。 WebClient.UploadFile 没有

    我想我找到了一种简化代码的方法使用 WebClient UploadFile 而不是 HttpWebRequest 但我最终在服务器端得到一个文件 该文件太短并且损坏了几十个字节 知道错误在哪里吗 Thanks 使用 HttpWebRequ
  • 如何检查一个字符串中的字母是否以相同的顺序出现在另一个字符串中

    我很想检查文本中的字母是否以相同的顺序出现在另一文本中 text Ce name Arsenic Answer False for x in text if x lower not in name lower return False 我希
  • jqGrid 未加载数据

    我确信这是我所缺少的简单的东西 但我似乎找不到它 我在这里指定了一个简单的 jqGrid mainGrid jqGrid datatype local colNames id name colModel name id index id w
  • 何时检查 C++ 模板实例化类型?

    编译 C 时 gcc 和 clang 似乎会推迟模板实例化的类型检查 直到程序的所有声明都已处理完毕 这在语言中得到保证吗 详细地说 我可以在定义模板或需要模板实例化时保持类型不完整 只要我稍后在程序中的某个地方完成该类型即可 class
  • 如何通过 Instruments 中的时间分析器查看正在运行的 OS X 程序的输出?

    由于某种原因 我的 OS X 应用程序在使用时间分析器时崩溃 但在其他情况下不会崩溃 我想查看程序的 stderr 和 stdout 输出 以尝试诊断问题所在 有任何想法吗 从 Xcode 13 和 14 开始 在 Instruments
  • 从 Simulink 模型获取模型拓扑

    我想在 Python 中创建一个代表 Simulink 模型的结构 我知道至少有两种方法可以做到这一点 通过解析 mdl 文件 或者使用 Matlab 的 api 与模型进行通信 您能推荐一些好的库或 API 来执行此操作吗 特别是 我需要
  • 什么是片段 URL 以及为什么使用它们?

    我是 PHP 开发新手 今天我遇到了 URL 片段这个有趣的话题 特别是 URL 的一部分 我搜索了一下 发现它就像 www example com foo html bar 但我不明白为什么会这样 bar是需要的 或者如何用PHP读取它
  • 使用Python按行号将大文本文件拆分为较小的文本文件

    我有一个文本文件 real big file txt 其中包含 line 1 line 2 line 3 line 4 line 99999 line 100000 我想编写一个Python脚本 将really big file txt分成
  • 随机槽算法

    我有二维数组 我想随机选择一个插槽 并继续这样做 直到我最终选择了所有插槽为止 永远不要选择同一个插槽两次 当然 最后一次选择没有随机的 是否有一个众所周知的算法可以做到这一点 我使用的是 C 但显然这更多的是关于算法而不是任何特定平台 是
  • 当虚拟键盘在 Mobile Safari 中打开时,如何阻止固定导航像这样移动?

    我知道移动 safari 在固定元素周围有很多错误 但在大多数情况下 我已经设法让我的布局正常工作 直到我在底部的固定导航中添加了急需的文本输入 现在 当用户专注于文本输入元素并且虚拟键盘出现时 我的导航 否则总是固定在页面底部 会跳转到页
  • 如何计算权重以最小化方差?

    给定几个向量 x1 3 4 6 x2 2 8 1 x3 5 5 4 x4 6 2 1 我想找到每个项目的权重 w1 w2 w3 并获得每个向量的加权和 yi w1 i1 w2 i2 w3 i3 例如 y1 3 w1 4 w2 6 w3使这些
  • 对于大数据集参数扩展很慢

    如果我从文件中取出前 1 000 个字节 Bash 可以很快替换一些字符 cut b 1000 get video info muted 0 status ok length seconds 24 endscreen module http
  • 使用 Google Apps 脚本在电子邮件正文中以 HTML 形式发送 Google 文档,同时保留格式

    在 Google 文档上使用下面的脚本 我尝试在电子邮件正文中以 HTML 形式发送文档 它正确转换文档 当我通过 URL 检查导出的文档时 并发送具有相同内容的电子邮件 但它在某些时候丢失了以下格式 字体格式 例如 大小 颜色 和表格格式
  • 如何将 UIAppearance 代理属性应用于 UILabel?

    在尝试将 UIAppearance 代理样式应用于 UILabel 类代理时 我得到了不可靠的结果 例如 以下内容按我的预期工作 UILabel appearance setFont UIFont fontWithName SOME FON
  • 如何添加复合CSS -webkit-mask-image?

    我的要求是在 div 顶部添加一个遮罩 使所有区域都具有 50 透明度 但该 div 中的一个小窗口应该是 100 不透明 100 不透明我的意思是 内容应该完全可见 而该区域上没有任何遮罩 我还附上了一张图片 提到了我想要实现的目标 我已
  • 如何使用映射管理器将 java.sql.Date 存储在 cassandra 日期字段中?

    有人可以帮我以格式将当前系统日期存储在 cassandra 日期列中yyyy mm dd使用Java 我在保存时遇到异常java sql Date using MappingManager 我的示例程序是 测试 java import co
  • 如何将“不安全”参数传递给 Java Webstart 应用程序的 JVM

    我的 Java Webstart 应用程序在受控的可信环境中运行 这是一个封闭的内部网络 我可以在其中控制应用程序的启动方式 如何将 JVM 参数传递给应用程序 即使 JVM 认为这些参数对于 webstart 使用来说 不安全 有多种选项
  • 带列表的模型 - 从 Razor 视图将新项目添加到列表的方法

    我有一个具有各种属性的模型 但感兴趣的是另一种类型模型的列表 例如 public class User public string Name get set public string Description get set public
  • 批量请求 - SendAs 电子邮件

    有没有办法执行批量请求以获取来自多个或所有用户的 SendAs 电子邮件 目前 我们正在使用具有用户模拟功能的服务帐户来遍历每个用户并获取 SendAs 电子邮件列表 很多请求 GmailService 作为服务 模拟为用户 service