Question

Quelqu'un est-il familier avec une bibliothèque Java qui aide à l'analyse des champs (date, sous réserve, 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: Bob\Inbox
X-Origin: Bob-R
X-FileName: rbob (Non-Privileged).pst


some message
Était-ce utile?

La solution

JavaMail est une bibliothèque d'Oracle qui fournit des services de messagerie et de courrier services connexes (comme l'analyse syntaxique des messages conventionnels et MIME) dans le package javax.mail. En outre Apache a Commons Envoyer bibliothèque pour le traitement du courrier.

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

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

et analyse les en-têtes pourrait se faire comme ceci

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

Autres conseils

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

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

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

Après un exemple de code 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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top