我正在使用一个小的java smtp库(http://code.google.com/p/subethasmtp/),通过这个我需要解析传入的电子邮件在单独的组件,即主体,附件等。
我正在尝试使用mime4j,但文档显示mime4j只能提供事件通知或令牌通知,而不能提供其他通知。为了剥离主体和附件等,我不得不在事件处理程序中使用我自己的自定义逻辑。我的观察是正确的吗?
如果是,那么我如何使用mime4j来满足我的需求。请提个建议。
我非常需要一种方法,它可以接收smtp数据流,并返回给我一组附件引用或java格式的完整解析形式的流。请帮帮忙。
提前感谢
阿什什·夏尔马
发布于 2010-04-28 16:40:44
Mime4j绝对可以做你需要的事情。创建org.apache.james.mime4j.message.SimpleContentHandler,的子类并实现bodyDecoded方法。然后将这个子类传递给一个MimeStreamParser实例。您将看到,对于每个正文或附件,bodyDecoded都被调用一次,它提供的流包含已经执行的Base64或带引号的可打印解码的数据。
如果您一般不喜欢基于事件的API,可以尝试通过org.apache.james.mime4j.message.Message类公开的更类似于DOM的功能。您可以调用Message.getBody(),然后查看它返回的是否是Multipart、TextBody、BinaryBody等的实例。如果是Multipart,则可以调用Multipart.getBodyParts来递归到子部分。
发布于 2011-06-08 04:02:23
@Ashish由于您使用的是SubEthaSmtp,另一个选项是执行SubEtha邮件列表管理器所做的事情:http://code.google.com/p/subetha/source/browse/trunk/src/org/subethamail/common/SubEthaMessage.java
链接类扩展了SMTPMessage,它有一堆getPart()方法。javax.mail.Part具备将附件转换为文件所需的大部分功能。
https://stackoverflow.com/questions/2675824
复制相似问题