【问题标题】:Java - How to get the raw MIME content of an email (using JavaMail or alternative)Java - 如何获取电子邮件的原始 MIME 内容(使用 JavaMail 或替代方法)
【发布时间】:2015-01-07 07:13:45
【问题描述】:

我需要查看邮件的原始内容 - 即所有 MIME 标头和分隔符 - 而不仅仅是纯文本。换句话说,如果您的电子邮件客户端是在编写 MIME 之前编写的,您将看到的内容。我如何通过 JavaMail(或替代方法)做到这一点?

更新:

  1. 我正在使用 JavaMail
  2. 正在其他地方生成 MIME - 我需要按原样发送它
  3. 我还需要获取传入电子邮件的原始 MIME 并将其发送到其他地方,原封不动

【问题讨论】:

  • 有点困惑 - 电子邮件是纯文本。即使是电子邮件中看似二进制的数据也被编码为纯文本(并标记为多部分二进制,以便对其进行解码)。 Everthing 的 CRLF 分隔。
  • @Mike - 但大多数电子邮件 API 会为您解析该文本:例如,您不会看到 MIME 分隔符

标签: java jakarta-mail mime


【解决方案1】:

我不确定您是否想查看现有邮件的原始 MIME 内容,或者您​​是否拥有原始 MIME 内容并想对它。

对于前者,请参阅 MimeMessage.writeTo 方法。

对于后者,请参阅采用 InputStream 的 MimeMessage 构造函数。

【讨论】:

  • 我很困惑writeTo有返回void,这将如何实现see the raw MIME content of an existing message的目标
  • 将其写入您可以查看的内容中,例如 ByteArrayOutputStream。
【解决方案2】:

如果您已经拥有用于将javax.mail.MimeMessages 从某个数据存储区拉出的JavaMail,您可以简单地调用它的getInputSream() 方法来访问原始内容,而忽略getContent() 将方便地提供MimeMultiPart 对象这一事实。

如果您没有 JavaMail,您可能希望更具体地输入您的信息。电子邮件全是文本,因此无论您从何处获得它都无关紧要,只要您能获得该来源的 InputStream 或 Reader。

【讨论】:

  • 谢谢 - 请查看更新 a) 我正在使用 JavaMail 和 b) 如何使用您的方法发送原始内容?
猜你喜欢
  • 2015-07-19
  • 2013-04-05
  • 2021-12-29
  • 2017-10-08
  • 1970-01-01
  • 2019-04-20
  • 2015-11-07
  • 2020-08-20
  • 2016-06-22
相关资源
最近更新 更多