通过mime4j解析电子邮件附件

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

我正在尝试使用mime4j,但文档建议mime4j只能提供事件通知或令牌通知,而不是其他任何内容。 为了剥离正文和附件等,我必须在事件处理程序中使用我自己的自定义逻辑。 我的观察是否正确?

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

我非常需要一种接受smtp数据流的方法,并在java中以完全解析的forms返回一系列附件引用或流。 请帮忙。

提前致谢

Ashish Sharma

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

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

@Ashish,因为你使用SubEthaSmtp的另一个选择是做SubEtha邮件列表管理器做的事情: http : //code.google.com/p/subetha/source/browse/trunk/src/org/subethamail/common/SubEthaMessage。 java的

链接类扩展了SMTPMessage,它有一堆getPart()方法。 javax.mail.Part具有将附件转换为文件所需的大部分内容。