Как ответить на сообщение, используя Gmail API в Java? - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь ответить на сообщение, используя API-интерфейс gmail, и я не совсем понимаю, как установить заголовок In-Reply-To и ссылки, я не уверен, как установить значение и как его установить. Пожалуйста, найдите мой код ниже:

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 голосов
/ 15 ноября 2018

Оба эти заголовка взяты из RFC2822 .

Части, относящиеся к вашему вопросу, включены на стр. 23-24 (выделение и форматирование мои):

При создании ответа на сообщение поля «In-Reply-To:» и «References:» полученного сообщения составляются следующим образом:

  • Поле «In-Reply-To:» будет содержать содержимое поля «Message-ID:» сообщения, на которое это является ответом («родительское сообщение»).Если имеется более одного родительского сообщения, то поле «In-Reply-To:» будет содержать содержимое всех родительских полей «Message-ID:».Если ни в одном из родительских сообщений нет поля «Message-ID:», то в новом сообщении не будет поля «In-Reply-To:».
  • Поле «References:» будет содержать содержимое родительского поля «References:» (если есть), за которым следует содержимое родительского поля «Message-ID:» (если есть).Если родительское сообщение не содержит поля «References:», но имеет поле «In-Reply-To:»>, содержащее один идентификатор сообщения, то поле «References:» будет содержать содержимое родительского «In-Поле Reply-To: », за которым следует содержимое поля« Message-ID: »родителя (если есть).Если у родителя нет полей «References:», «In-Reply-To:» или «Message-ID:», то в новом сообщении не будет поля «References:».
...