Java Email message Parser?

是否有人熟悉Java库,可以帮助解析下面的电子邮件的字段(日期,主题,从,到)?

Message-ID:  Date: Wed, 6 Mar 2010 12:32:20 -0800 (PST) From: someone@someotherplace.com To: someone@someplace.com Subject: some subject Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-From: one, some  X-To: one X-cc: X-bcc: X-Folder: Bob\Inbox X-Origin: Bob-R X-FileName: rbob (Non-Privileged).pst some message 

JavaMail是一个oracle库,它在javax.mail包中提供邮件服务和邮件相关服务(如解析传统和MIME消息)。 此外,Apache还有一个用于邮件处理的Commons Email库。

在JavaMail api中,一种解析包含电子邮件消息的字符串的简单方法(可能是或可能不是显式MIME)如下所示

 String content = ... Session s = Session.getInstance(new Properties()); InputStream is = new ByteArrayInputStream(content.getBytes()); MimeMessage message = new MimeMessage(s, is); 

解析标题可以像这样完成

 message.getAllHeaderLines(); for (Enumeration
e = message.getAllHeaders(); e.hasMoreElements();) { Header h = e.nextElement(); h.getName(); h.getValue(); }

我遇到了JavaMail的问题(它无法解析它应该的一些电子邮件)。

我用Mime4J得到了更好的结果。

我建议你使用email-mime-parser ,

以下示例代码为您提供了所需的所有相关信息:

 ContentHandler contentHandler = new CustomContentHandler(); MimeConfig mime4jParserConfig = new MimeConfig(); BodyDescriptorBuilder bodyDescriptorBuilder = new DefaultBodyDescriptorBuilder(); MimeStreamParser mime4jParser = new MimeStreamParser(mime4jParserConfig,DecodeMonitor.SILENT,bodyDescriptorBuilder); mime4jParser.setContentDecoding(true); mime4jParser.setContentHandler(contentHandler); InputStream mailIn = 'Provide email mime stream here'; mime4jParser.parse(mailIn); Email email = ((CustomContentHandler) contentHandler).getEmail(); List attachments = email.getAttachments(); Attachment calendar = email.getCalendarBody(); Attachment htmlBody = email.getHTMLEmailBody(); Attachment plainText = email.getPlainTextEmailBody(); String to = email.getToEmailHeaderValue(); String cc = email.getCCEmailHeaderValue(); String from = email.getFromEmailHeaderValue();