web-dev-qa-db-fra.com

Java Analyseur de message électronique?

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: [email protected]
To: [email protected]
Subject: some subject
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-From: one, some <[email protected]>
X-To: one
X-cc: 
X-bcc: 
X-Folder: Bob\Inbox
X-Origin: Bob-R
X-FileName: rbob (Non-Privileged).pst


some message
29
Kareem

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 le package javax.mail. De plus, Apache dispose d'une bibliothèque Commons 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 analyser les en-têtes pourrait être fait comme ça

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

J'ai eu des problèmes avec JavaMail (il ne parvient pas à analyser certains e-mails comme il se doit).

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

9
Adam Gent

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

L'exemple de code suivant vous donne toutes les informations pertinentes 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();
5
Ashish Sharma