سؤال

هل أي شخص على دراية بمكتبة جافا تساعد في تحليل الحقول (التاريخ ، الموضوع ، من ، إلى) من البريد الإلكتروني أدناه؟

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
هل كانت مفيدة؟

المحلول

جافاميل هي مكتبة Oracle التي توفر خدمات البريد والخدمات المتعلقة بالبريد (مثل تحليل الرسائل التقليدية و MIME) في حزمة javax.mail. بالإضافة إلى ذلك ، لدى Apache ملف البريد الإلكتروني المشاعات مكتبة لمعالجة البريد.

في واجهة برمجة تطبيقات Javamail ، ستكون هناك طريقة بسيطة لتحليل سلسلة تحتوي

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

ويمكن أن يتم تحليل الرؤوس مثل هذا

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

نصائح أخرى

لقد واجهت مشاكل مع Javamail (فشل في تحليل بعض رسائل البريد الإلكتروني التي ينبغي).

لقد حصلت على نتائج أفضل بكثير مع MIME4J.

أود أن أقترح عليك استخدام البريد الإلكتروني mime-parser,

يمنحك نموذج الرمز التالي جميع المعلومات ذات الصلة التي تحتاجها:

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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top