Извлечение содержимого сообщений из email

Отображение информации email на экране

Этот MailMessage представляет сообщение email и позволяет разработчикам получать доступ к свойствам сообщения email. Информация заголовка (обсуждается в Извлечение заголовков email) можно извлекать и обрабатывать различными способами. Эта статья объясняет, как отобразить выбранную информацию заголовков email и тело сообщения на экране.

  1. Создайте экземпляр MailMessage.
  2. Загрузите сообщение email в экземпляр MailMessage.
  3. Отобразите содержимое email на экране.

Код ниже демонстрирует, как загрузить сообщение email и отобразить его содержимое — от, до, тему и тело сообщения — на экране.

Получение даты и времени сообщения

Этот MailMessage класс может использоваться для получения даты сообщения в UTC или в локальном часовом поясе. Эта информация может быть резюмирована следующим образом:

  1. MailMessage.getDate() - возвращает дату в UTC
  2. MailMessage.getLocalDate() - возвращает дату в локальном часовом поясе
  3. MailMessage.isLocalDate Возвращает true, если MailMessage.getDate() находится в локальном часовом поясе

Извлечение заголовков email

Заголовок email представляет собой набор полей заголовка, определённых стандартом Internet и RFC, включённый в сообщения email. Заголовок email может быть указан с помощью MailMessage класс. Общие типы заголовков определены в HeaderType класс. Это запечатанный класс, работающий как обычное перечисление.

Чтобы извлечь заголовки из email, выполните следующие шаги:

  1. Создайте экземпляр класса MailMessage.
  2. Загрузите сообщение email в экземпляр класса MailMessage.
  3. После загрузки сообщения email мы получим его необработанное содержимое. Класс MailMessage сам по себе содержит свойства такие как From, To, Cc, Subject и т.д. Эти свойства можно извлечь из заголовков.
  4. Отобразите необработанное содержимое.

Получить декодированные значения заголовков

Получить и изменить заголовок Disposition связанного ресурса

Связанный ресурс может быть доступен и изменён программно в объекте сообщения электронной почты. getContentDisposition() метод LinkedResource класс получает заголовок Content-Disposition. Пример кода ниже демонстрирует, как получить доступ к имени файла связанного ресурса и изменить его:

MailMessage eml = MailMessage.load(fileName);
eml.getLinkedResources().get_Item(0).getContentDisposition().setFileName("changed.png");

Получить HTML‑тело в виде обычного текста

Этот MailMessage класс предоставляет возможность извлекать HTML‑тело сообщения в виде обычного текста. Класс MailMessage предоставляет GetHtmlBodyText метод, который возвращает HTML‑тело в виде обычного текста. Метод GetHtmlBodyText принимает булевый параметр, указывающий, следует ли включать в тело URL‑адреса. Передача параметра со значением true означает, что HTML‑тело должно содержать URL‑адреса.

Следующий фрагмент кода демонстрирует использование метода GetHtmlBodyText для извлечения HTML‑тела письма в виде обычного текста.

Получение X.500‑адресов Exchange из писем

Aspose.Email for Java позволяет напрямую получать X.500‑адреса Exchange через MailAddress класс. С X500Address с помощью свойства можно получить адрес электронной почты в формате Exchange X.500, если он доступен. Следующий пример кода показывает, как загрузить сообщение и получить X.500‑адрес отправителя:

MailMessage mailMessage = MailMessage.load(fileName);
String exaddr = mailMessage.getFrom().getX500Address();

Если X.500‑адрес существует, он будет возвращён в виде строки и может быть использован для дальнейшей обработки или логирования в приложениях, взаимодействующих с системами на базе Exchange.

Извлекать и встраивать связанные изображения как вложения в HTML‑письмах

Aspose.Email ExtractHTMLBodyResourcesAsAttachments метод HtmlSaveOption класс определяет, следует ли извлекать ресурсы HTML‑тела в виде вложений. Таким образом, можно извлекать контент, привязанный к изображениям, из HTML‑тела и встраивать его как вложение в MIME‑сообщение. Связанные изображения сохраняются и корректно ассоциируются с письмом, улучшая целостность контента и возможность доступа офлайн.

Следующий пример кода демонстрирует, как выполнить эту задачу:

MailMessage mailMessage = MailMessage.load("input.eml");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setExtractHTMLBodyResourcesAsAttachments(true);
options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
    public void invoke(final Object sender, final ResourceHtmlRenderingEventArgs e) {
        System.out.println(e.getPathToResourceFile() + " " + ((Attachment)sender).getContentId());
    }
});