API почты javax: получение message.getdescription () = null

Я читал письма через imap и мог получать сообщения, их тему, дату отправки и адрес. Но описание сообщения - null. Я использовал Javax mail api 1.4.

Добро пожаловать в Stack Overflow! Пришло время прочитать страницы помощи, особенно разделы с именами "Какие темы я могу спросить здесь?" и «Какие типы вопросов мне следует избегать?». Также пожалуйста взять тур и читай о том, как задавать хорошие вопросы. Наконец, узнайте, как создать Минимальный, полный и проверяемый пример.

Aniket Sahrawat 11.04.2018 12:01

В двух словах: Какой у Вас вопрос? Должно ли описание быть не нулевым? Что это должно быть?

Malte Hartwig 11.04.2018 12:07

message.getDescription () должен был передать мне тело письма. который я получаю null.

reshma begum 11.04.2018 16:23
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
260
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Из MimeMesage документация метод getDescription () используется для получения поля заголовка «Content-Description» сообщения.

Если вы хотите извлечь тело, вы можете использовать MimeMessageParser в объекте сообщения.

final MimeMessageParser parser = new MimeMessageParser(message);
String body = null;
try {
    parser.parse();
} catch (Exception e) {
    LOG.error("Exception during parsing the message body: {}", e);
}
if (parser.hasPlainContent()) {
    body = parser.getPlainContent();
} else if (parser.hasHtmlContent()) {
    body = parser.getHtmlContent();
}

javadoc для MimeMessage::getDescription() говорит:

Returns the "Content-Description" header field of this Message. This typically associates some descriptive information with this part. Returns null if this field is unavailable or its value is absent.

Итак, если getDescription() возвращает null, это означает, что сообщение MIME, которое вы пытаетесь прочитать, не имеет этого поля или поле пусто.

Отсутствие "Content-Description" является законным, поскольку RFC 2045 утверждает:

This header field is always optional.


Короче говоря, ваше приложение должно быть спроектировано так, чтобы работать с getDescription(), возвращающим null.


Вы прокомментировали:

message.getDescription() was supposed to give me body of the mail. which im getting null.

Это не то, что делает getDescription(). Если вам нужен тело почты, используйте getContent() или getContentAsStream()

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