Pregunta

Hay alguien familiarizado con una biblioteca de Java que ayuda con el análisis de los campos (fecha, asunto, de, a) 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: 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
¿Fue útil?

Solución

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

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

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

y analizar las cabeceras se podría hacer como esto

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

Otros consejos

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

he tenido mucho mejores resultados con Mime4J .

Yo sugeriría que utilice href="https://github.com/ram-sharma-6453/email-mime-parser" correo electrónico-mime-analizador ,

Después de que el código de ejemplo proporciona 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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top