p7s 文件和 javamail

p7s file and 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"文件丢失

我怎样才能找到这个?在String message(消息)中我看到了:

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

文件在哪里???

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

已解决! 收到的 message-text 包含所有 (headers + bodypart)。管理时,它 "loose" headers 部分。将这些添加到第一个 message-text 我现在可以看到所有附件,甚至是 p7s 文件。 事实上,这个文件是使用代码绑定嵌套到主电子邮件中的(打印 txt 你可以看到它),但是这个 link 缺少 headers。以这种方式,没有 headers,没有人可以访问 p7s 文件。

解决方法是:在txt-message.

的开头加入headers形式的"name: value\n"