通过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具有将附件转换为文件所需的大部分内容。
- Java / SWT:如何从嵌入式窗口接收鼠标事件
- EntityManager注入 – NullPointerException
- JAXB无休止的数据结构,递归绑定?
- 在Android 4.4 SDK更新后,android-support-v7-appcombat jar不匹配和应用程序崩溃
- 使用JPA和ManyToMany进行Spring启动:JsonIdentifyInfo无法正常工作
- 使用Java 7进行转义分析/堆栈分配的资格
- 为什么Google Collections中没有SortedMultiset?
- Hibernate:如何覆盖映射超类的属性
- Java在for循环中使用getter还是创建局部变量?