Как подключиться к почтовому серверу, чтобы использовать mime4j?

Я пытаюсь перейти с Javamail на mime4j в надежде, что у меня будет меньше проблем с анализом почты. Однако мне не удалось выяснить, как подключиться к почтовому серверу, чтобы затем использовать mime4j для разбора сообщений.

Javamail обеспечивает сеанс и соединения с почтовым сервером через IMAP или POP3, с которого вы затем читаете сообщения. Насколько я могу судить, mime4j не предлагает ничего эквивалентного.

Так как я могу подключиться к почтовым серверам, чтобы использовать mime4j? Могу ли я использовать Javamail вместе с mime4j?

Я пробовал использовать javamail Message.getInputStream метод, чтобы получить входной поток, который я передаю в Mime4j DefaultMessageBuilder.parseMessage, Однако результат не тот, который я ожидаю: для составного сообщения, содержащего текстовую часть и HTML-часть, создается только одна TextBody. Я подозреваю, что это потому, что DefaultMessageBuilder.parseMessage ожидает поток для всего сообщения, не только тела, но и этого javamail Message.getInputStream только обеспечивает тело.

На самом деле, меня интересует только тело, так как именно это вызывает проблемы с Javamail, но синтаксический анализ всего сообщения (если бы я мог получить его в качестве входного потока из Javamail) был бы таким же.

Любая помощь с благодарностью!

1 ответ

Решение

Если вы используете POP3, весь анализ сообщений происходит на стороне клиента в JavaMail. Вы смотрели на многие свойства, которые вы можете установить в JavaMail, чтобы настроить обработку ошибок синтаксического анализа?

Если вы используете IMAP, большая часть анализа выполняется сервером. Какие ошибки синтаксического анализа вы все еще имеете с JavaMail? Это проблемы с анализом содержимого сообщений электронной почты или проблемы с сообщениями протокола IMAP?

С более подробной информацией о проблемах, с которыми вы столкнулись, я мог бы помочь вам настроить JavaMail для вас.

Если вы действительно хотите использовать другой анализатор сообщений MIME, вам необходимо использовать метод Message.writeTo для получения всего содержимого MIME сообщения, которое вы можете передать в другую библиотеку для анализа.

Другие вопросы по тегам