Извлечение содержимого сообщений из email
Отображение информации email на экране
Этот MailMessage представляет сообщение email и позволяет разработчикам получать доступ к свойствам сообщения email. Информация заголовка (обсуждается в Извлечение заголовков email) можно извлекать и обрабатывать различными способами. Эта статья объясняет, как отобразить выбранную информацию заголовков email и тело сообщения на экране.
- Создайте экземпляр MailMessage.
- Загрузите сообщение email в экземпляр MailMessage.
- Отобразите содержимое email на экране.
Код ниже демонстрирует, как загрузить сообщение email и отобразить его содержимое — от, до, тему и тело сообщения — на экране.
Получение даты и времени сообщения
Этот MailMessage класс может использоваться для получения даты сообщения в UTC или в локальном часовом поясе. Эта информация может быть резюмирована следующим образом:
- MailMessage.getDate() - возвращает дату в UTC
- MailMessage.getLocalDate() - возвращает дату в локальном часовом поясе
- MailMessage.isLocalDate Возвращает true, если MailMessage.getDate() находится в локальном часовом поясе
Извлечение заголовков email
Заголовок email представляет собой набор полей заголовка, определённых стандартом Internet и RFC, включённый в сообщения email. Заголовок email может быть указан с помощью MailMessage класс. Общие типы заголовков определены в HeaderType класс. Это запечатанный класс, работающий как обычное перечисление.
Чтобы извлечь заголовки из email, выполните следующие шаги:
- Создайте экземпляр класса MailMessage.
- Загрузите сообщение email в экземпляр класса MailMessage.
- После загрузки сообщения email мы получим его необработанное содержимое. Класс MailMessage сам по себе содержит свойства такие как From, To, Cc, Subject и т.д. Эти свойства можно извлечь из заголовков.
- Отобразите необработанное содержимое.
Получить декодированные значения заголовков
Получить и изменить заголовок 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());
}
});