Анализ вложения электронной почты через mime4j - PullRequest
5 голосов
/ 20 апреля 2010

Я использую небольшую библиотеку Java SMTP (http://code.google.com/p/subethasmtp/),, поэтому мне нужно проанализировать входящие электронные письма в отдельных компонентах, а именно: тело, вложения и т.д.

Я пытаюсь использовать mime4j, но документация предполагает, что mime4j может давать только уведомление о событии или уведомление о токене, и ничего больше. Для удаления тела, вложений и т. Д. Я должен был использовать свою собственную пользовательскую логику внутри обработчиков событий. Правильно ли мое наблюдение?

Если да, то как мне использовать mime4j для моего требования? Пожалуйста, предложите.

Мне очень нужен подход, который использует поток данных smtp и возвращает меня с массивом ссылок на вложения или потоков в полностью разобранном виде в Java. Пожалуйста, помогите.

Заранее спасибо

Ашиш Шарма

Ответы [ 2 ]

9 голосов
/ 28 апреля 2010

Mime4j определенно может делать то, что вам нужно. Создайте подкласс org.apache.james.mime4j.message.SimpleContentHandler и реализуйте метод bodyDecoded. Затем передайте этот подкласс в экземпляр MimeStreamParser. Вы увидите, что bodyDecoded вызывается один раз для тела или вложения, а поток, который он вам дает, содержит данные с уже выполненным декодированием Base64 или Quoted-Printable.

Если вам не нравятся основанные на событиях API в целом, вы можете попробовать более DOM-подобную функциональность, предоставляемую через класс org.apache.james.mime4j.message.Message. Вы можете вызвать Message.getBody (), а затем посмотреть, является ли то, что он возвращает вам, экземпляром Multipart, TextBody, BinaryBody и т. Д. Если Multipart, то вы можете вызвать Multipart.getBodyParts для рекурсии в подчасти.

2 голосов
/ 08 июня 2011

@ Ашиш другой вариант, так как вы используете SubEthaSmtp, это делать то, что делает менеджер списков рассылки SubEtha:

Связанный класс расширяет SMTPMessage и имеет несколько методов getPart (). javax.mail.Part содержит большую часть того, что вам нужно, чтобы превратить вложение в файл.

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