我正在使用一个小型的Java smtp库(http://code.google.com/p/subethasmtp/),因此我需要将传入的电子邮件解析为单独的组件,即正文,附件等。

我正在尝试使用mime4j,但是文档表明mime4j只能提供事件通知或令牌通知,而不能提供其他任何东西。为了去除正文和附件等,我必须在事件处理程序中使用自己的自定义逻辑。我的观察正确吗?

如果是,那我该如何使用mime4j来满足我的要求。请提出建议。

我非常需要一种接受smtp数据流并以Java中完全解析出的形式提供附件引用或流数组的方式返回给我的方法。请帮忙。

提前致谢

艾希什·沙玛(Ashish Sharma)

最佳答案

Mime4j绝对可以满足您的需求。创建org.apache.james.mime4j.message.SimpleContentHandler的子类,并实现bodyDecoded方法。然后将此子类传递给MimeStreamParser实例。您会看到bodyDecoded每个主体或附件被调用一次,并且它给您的流包含已执行Base64或Quoted-Printable解码的数据。

如果您一般不喜欢基于事件的API,则可以尝试通过org.apache.james.mime4j.message.Message类公开的更多类似DOM的功能。您可以调用Message.getBody(),然后查看它返回的内容是否是Multipart,TextBody,BinaryBody等的实例。如果是Multipart,则可以调用Multipart.getBodyParts递归到子部分中。

07-24 18:52