java parsing email email-parsing

Analizador de mensajes de correo electrónico de Java?



parsing email (3)

¿Alguien está familiarizado con una biblioteca Java que ayuda a analizar los campos (fecha, asunto, desde, hasta) del correo electrónico a continuación?

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


He tenido problemas con JavaMail (no analiza algunos mensajes de correo electrónico que debería).

He tenido mejores resultados con Mime4J .


Sugeriría que uses email-mime-parser ,

El siguiente código de muestra le brinda toda la información relevante que necesita:

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();


JavaMail es una biblioteca de Oracle que proporciona servicios de correo y servicios relacionados con el correo (como el análisis de mensajes convencionales y MIME) en el paquete javax.mail. Además, Apache tiene una biblioteca de correo electrónico de Commons para el manejo del correo.

En la API de JavaMail, una forma simple de analizar una cadena que contiene un mensaje de correo electrónico (que puede o no ser explícitamente MIME) sería la siguiente

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

y el análisis de los encabezados podría hacerse así

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