Анализ вложения электронной почты через mime4j
Я использую небольшую библиотеку Java SMTP ( http://code.google.com/p/subethasmtp/), для этого мне нужно проанализировать входящие электронные письма в отдельных компонентах, а именно тело, вложения и т. Д.
Я пытаюсь использовать mime4j, но документация предполагает, что mime4j может давать только уведомление о событии или уведомление о маркере и ничего больше. Для удаления тела, вложений и т. Д. Мне пришлось использовать свою собственную логику внутри обработчиков событий. Правильно ли мое наблюдение?
Если да, то как я могу использовать mime4j для моего требования? Пожалуйста, предложите.
Мне очень нужен подход, который принимает поток данных smtp и возвращает меня с массивом ссылок на вложения или потоков в полностью разобранном виде в Java. Пожалуйста помоги.
заранее спасибо
Ашиш Шарма
2 ответа
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 для рекурсии в части.
@ Оставьте другой вариант, поскольку вы используете SubEthaSmtp, чтобы делать то, что делает менеджер списков рассылки SubEtha: http://code.google.com/p/subetha/source/browse/trunk/src/org/subethamail/common/SubEthaMessage.java
Связанный класс расширяет SMTPMessage и имеет несколько методов getPart(). javax.mail.Part имеет большую часть того, что вам нужно, чтобы превратить вложение в файл.