Java Email Message Parser?

Quelqu'un connaît-il une bibliothèque Java qui aide à analyser les champs (date, sujet, de, à) de l'e-mail ci-dessous?

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: BobInbox
X-Origin: Bob-R
X-FileName: rbob (Non-Privileged).pst


some message
27
demandé sur Kareem 2010-08-10 02:27:06

3 réponses

JavaMail est une bibliothèque oracle qui fournit des services de messagerie et des services liés au courrier (comme l'analyse des messages conventionnels et MIME) dans javax.paquet de courrier. De plus, Apache a une bibliothèqueCommons Email pour la gestion du courrier.

Dans L'api JavaMail, un moyen simple d'analyser une chaîne contenant un message électronique (qui peut ou non être explicitement MIME) serait le suivant

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

Et l'analyse des en-têtes pourrait être faite comme ceci

message.getAllHeaderLines();
for (Enumeration<Header> e = message.getAllHeaders(); e.hasMoreElements();) {
    Header h = e.nextElement();
    h.getName();
    h.getValue();
}
33
répondu Jherico 2017-11-01 11:29:32

J'ai eu des problèmes avec JavaMail (il ne parvient pas à analyser certains messages qu'il devrait).

J'ai eu de bien meilleurs résultats avec Mime4J.

9
répondu Adam Gent 2012-08-13 03:07:54

Je vous suggère d'utiliser email-mime-analyseur,

Exemple de code Suivant vous donne toutes les informations dont vous avez besoin:

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();
4
répondu Ashish Sharma 2016-10-06 06:50:07