p7s文件和javamail

时间:2019-03-22 11:24:06

标签: java javamail

我使用此代码读取经过认证的电子邮件中S / Mime格式的电子邮件字符串。这是一个片段

InputStream inputStreamObj = new ByteArrayInputStream(message.getBytes());
MimeMessage mimeMessageObj = new MimeMessage(session, inputStreamObj);
Object content = mimeMessageObj.getContent();
if (content instanceof Multipart) {
   Multipart multiPart = (Multipart)content;
   for (int i = 0; i < multiPart.getCount(); i++) {
      BodyPart part = (MimeBodyPart) multiPart.getBodyPart(i);
      if (part.getFileName() != null) {
          System.out.println("Filename:"+part.getFileName());
      } else if (part.getContent() instanceof Multipart) {
          System.out.println("Multipart");
          //here there is a recursive call to this method
      } else if (part.getContent() instanceof String) {
          System.out.println("Message text: "+part.getContent());
      } else {
          System.out.println("NOT RECOGNIZED TYPE");
      }
    }
}

我以这种方式看到:

Message text: <message in html form>
Message text: <message in txt form>
File: daticert.xml
File: postacert.eml

但是这里缺少“ smime.p7s”文件

如何找到这个?在“字符串”消息(消息)中,我看到了它:

Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"

文件在哪里?

也许我不能使用MimeMessage,而必须使用javax.mail.Message?以及如何转换Message中的文本?

1 个答案:

答案 0 :(得分:1)

解决了! 收到的消息文本包含所有(标题+正文部分)。在管理时,它“松开”标题部分。现在将它们添加到第一个消息文本中,我可以看到所有附件,甚至是p7s文件。 实际上,此文件是使用代码绑定(打印您可以看到的txt)嵌套到主电子邮件中的,但是此链接缺少标题。以这种方式,没有标题,任何人都无法访问p7s文件。

解决方案是:在txt消息的开头添加标题为“名称:值\ n”形式的标头。