【问题标题】:How to use batch requests for Gmail Send API如何使用 Gmail 发送 API 的批量请求
【发布时间】:2017-12-09 05:13:17
【问题描述】:

我目前使用 Gmail API 一次发送多个电子邮件。我按顺序执行此操作:

  1. 通过 GmailAPI 发送电子邮件
  2. 等待 GmailAPI 的响应。
  3. 收到响应后,使用 GmailAPI 返回的 ThreadID 更新记录。
  4. 对其他电子邮件重复步骤 1-3。

我正在阅读有关批处理您的 sendEmail API 请求的信息,以便我们对 API 进行一次调用并处理响应。 虽然我可以批量处理我的所有请求并发送它,

我不确定如何处理响应。如果我在批处理请求中有 30 个发送电子邮件请求,当收到批处理的响应时,我如何确定哪个响应是针对哪个电子邮件的?

这是我的实现

BatchRequest batch  = gmailService.batch();
gmailService.users().messages().send("me", message).queue(batch, callback);
batch.execute();

    final List<Message> messages = new ArrayList<Message>();
        JsonBatchCallback<Message> callback = new JsonBatchCallback<Message>() {
            public void onSuccess(Message message, HttpHeaders  responseHeaders) {
                System.out.println("MessageThreadID:"+ message.getThreadId());
                System.out.println("MessageID:"+ message.getId());
                synchronized (messages) {
                    messages.add(message);  
                }
            }

            @Override
            public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders)
                    throws IOException {
            }
        };

【问题讨论】:

    标签: java google-api gmail-api google-api-java-client


    【解决方案1】:

    我不确定如何处理响应。如果我在批处理请求中有 30 个发送电子邮件请求,当收到批处理的响应时,我如何确定哪个响应是针对哪个电子邮件的?

    根据这个Batch Request Response文档:

    对批处理请求的响应

    服务器的响应是一个标准的 HTTP 响应,带有 多部分/混合内容类型;每个部分都是对其中一个的响应 批处理请求中的请求,与请求的顺序相同。

    与请求中的部分一样,每个响应部分都包含一个完整的 HTTP 响应,包括状态代码、标头和正文。和喜欢 请求中的部分,每个响应部分前面都有一个 标记部分开始的 Content-Type 标头。

    您可以按照发出请求的顺序获取完整的 HTTP 响应、其状态代码、其标头和正文。所以响应一是针对第一个请求,响应二是针对第二个请求,依此类推。通过这种方式,您可能会计算出哪个电子邮件的响应。

    【讨论】:

      猜你喜欢
      • 2023-01-01
      • 2021-08-11
      • 2018-05-21
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多