Java电子邮件消息解析器?
-
27-09-2019 - |
题
是任何人都熟悉的Java库,以解析领域帮助(日期,主题,发件人,收件人)下面的电子邮件?
的Message-ID: <19815303.1075861029555.JavaMail.ss@kk>
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 <some.one@someotherplace.com>
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库,提供电子邮件服务和邮件相关服务(例如常规解析&MIME消息)在javax.mail包。另外的Apache有一个通用电子邮件对邮件处理库。
在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<Header> e = message.getAllHeaders(); e.hasMoreElements();) {
Header h = e.nextElement();
h.getName();
h.getValue();
}
其他提示
我有问题用JavaMail(它不能解析某些电子邮件消息,它应)。
我曾与 Mime4J 更好的结果。
我会建议你使用电子邮件MIME解析器,
下面的示例代码为您提供所有相关信息,您需要:
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<Attachment> 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();
不隶属于 StackOverflow