我正在尝试使用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;
}
答案 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:”字段。