如何使用Gmail Send API的批量请求

时间:2017-07-05 13:36:19

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

我目前使用Gmail API一次发送多封电子邮件。我按顺序做这个:

  1. 通过GmailAPI发送电子邮件
  2. 等待来自GmailAPI的回复。
  3. 收到回复后,使用GmailAPI返回的ThreadID更新记录。
  4. 对其他电子邮件重复步骤1-3。
  5. 我正在阅读有关批量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 {
                }
            };
    

1 个答案:

答案 0 :(得分:1)

  

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

根据此Batch Request Response文件:

  

对批量请求的响应

     

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

     

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

您可以按照发出请求的顺序获取完整的HTTP响应,其状态代码,标题和正文。因此响应1是第一个请求,响应2是第二个请求,依此类推。通过这种方式,您可以找出电子邮件的响应。