Чтение / разбор электронной почты / почты с Java напрямую из файловой системы в стандартном почтовом формате RFC - PullRequest
3 голосов
/ 12 августа 2010

Я хочу анализировать сообщения электронной почты непосредственно из файловой системы, используя java (1.6), сообщения электронной почты будут находиться в папке файловой системы, например

abc-12345.msg qwe-23456.msg

и будет в стандартном формате: например:

MIME-Version: 1.0
Sender: mr.sender@gmail.com
Received: by 10.239.173.80 with HTTP; Thu, 12 Aug 2010 11:30:50 -0700 (PDT)
Date: Thu, 12 Aug 2010 15:30:50 -0300
Delivered-To: mr.recipient@gmail.com
Message-ID: <AANLkTikA-RbE_revkimBCWC2fUrG=t4T47AXq5FTx0vd@mail.gmail.com>
Subject: =?ISO-8859-1?Q?Hello_With_Acc=E9=F1ts?=
From: Mr Sender <mr.sender@gmail.com>
To: Mr Recipient <mr.recipient@gmail.com>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

This is a testing one

Accent characters:

=E9=F3=FA=F1

Email End

Я хочу проанализировать этот файл или использовать существующую библиотеку для анализа файла, чтобы дать мне доступ к заголовкам / от / до / субъекта / телаи т. д.

Все файлы хранятся в локальной файловой системе.Я не подключаюсь к хранилищу сообщений через pop / imap.Какой самый простой, самый простой способ для меня это сделать.Файлы могут содержать вложения.

Любые предложения приветствуются.Если существует уже существующий API (возможно, javamail), который может это сделать, пожалуйста, предоставьте примеры или ссылки на примеры.

Cheers Simon

Ответы [ 3 ]

4 голосов
/ 12 августа 2010

используйте API Java:

, например:

  File[] mailFiles = getPertinentMailFiles();
  String host = "host.com";
  java.util.Properties properties = System.getProperties();
  properties.setProperty("mail.smtp.host", host);
  Session session = Session.getDefaultInstance(properties);
  for (File tmpFile : mailFiles) {
     MimeMessage email = null;
     try {
        FileInputStream fis = new FileInputStream(tmpFile);
        email = new MimeMessage(session, fis);
        System.out.println("content type: " + email.getContentType());
        System.out.println("\nsubject: " + email.getSubject());
        System.out.println("\nrecipients: " + Arrays.asList(email.getRecipients(Message.RecipientType.TO))); 
     } catch (MessagingException e) {
        throw new IllegalStateException("illegal state issue", e);
     } catch (FileNotFoundException e) {
        throw new IllegalStateException("file not found issue issue: " + tmpFile.getAbsolutePath() , e); 
     }
  }
1 голос
/ 01 августа 2012

Если у вас есть текст электронной почты (то есть весь полезный груз MIME), чем я бы использовал Mime4J .

Библиотека намного проще в использовании, быстрееи меньший размер, чем у "javax.mail".

0 голосов
/ 13 августа 2010

Вы можете использовать JavaMail немедленно для доступа к хранилищам IMAP и POP3, а не к хранилищу файловой системы.

В JavaMail доступ к электронной почте организован с помощью реализаций javax.mail.Store. Вы можете проверить JavaMail API - Сторонние продукты для реализации javax.mail.Store для вашего специального формата файла. Возможно, вы сами реализуете javax.mail.Store, если не можете найти что-то подходящее. Используя ваш Магазин, вы можете использовать все функции JavaMail, например, обработку вложений, все странные вещи MIME и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...