如何在Java中使用Gmail API回复邮件?

时间:2018-11-14 22:33:42

标签: java gmail gmail-api

我正在尝试使用gmail api答复消息,并且在设置In-Reply-To和references标题时感到困惑,我不确定将值设置为什么以及如何设置值。请在下面找到我的代码:

public static Message createMessageWithEmail(MimeMessage emailContent) throws Exception {
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
    emailContent.addRecipient(javax.mail.Message.RecipientType.TO, emailContent.getFrom()[0]);
    emailContent.setReplyTo(emailContent.getFrom());
    emailContent.setHeader("In-Reply-To", emailContent.getMessageID());
    emailContent.setHeader("References",emailContent.getMessageID());
    emailContent.setText("hi thank you");
    emailContent.writeTo(buffer);
    byte[] bytes = buffer.toByteArray();
    String encodedEmail = Base64.encodeBase64URLSafeString(bytes);
    Message message = new Message();
    message.setRaw(encodedEmail);
    return message;
  }




private static Message replyMessage(Gmail service, String userId, MimeMessage emailContent,Message messages) throws Exception {
    Message message = createMessageWithEmail(emailContent);
    message.setThreadId(messages.getThreadId());
    message.setId(messages.getId());
    message = service.users().messages().send(userId, message).execute();
    System.out.println("Message id: " + message.getId());
    System.out.println(message.toPrettyString());
    return message;
  }

1 个答案:

答案 0 :(得分:0)

这两个标头均来自RFC2822

与您的问题相关的部分包含在第23-24页(强调和格式化我的内容):

  

创建对邮件的回复时,“回复中:”和   结果消息的“参考:”字段构造为   如下:

     
      
  • “回复至:”字段将包含此回复对象的邮件(“父邮件”)的“ Message-ID:”字段的内容。如果有多个父邮件,则“ In-Reply-To:”字段将包含所有父邮件的“ Message-ID:”字段的内容。如果任何父邮件中都没有“ Message-ID:”字段,则新邮件将没有“ In-Reply-To:”字段。
  •   
  • “参考:”字段将包含父级的“参考:”字段(如果有)的内容,后跟父级的“消息ID:”字段(如果有的话)的内容。如果父邮件不包含“ References:”字段,但确实包含一个包含单个邮件标识符的“ In-Reply-To:”字段>,则“ References:”字段将包含父级“ In-Reply:”字段的内容回复至:”字段,后跟父级的“邮件ID:”字段的内容(如果有)。如果父级没有“ References:”,“ In-Reply-To:”或“ Message-ID:”字段,则新邮件将没有“ References:”字段。
  •