Извлечение содержимого сообщений из электронных писем

Отображение информации об электронной почте на экране

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

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

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

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the resource directory.
String dataDir = Utils.getSharedDataDir(DisplayEmailInformation.class) + "email/";
//Create MailMessage instance by loading an Eml file
MailMessage message = MailMessage.load(dataDir + "test.eml");
System.out.print("From: ");
//Gets the sender info
System.out.println(message.getFrom());
System.out.print("To: ");
//Gets the recipients info
System.out.println(message.getTo());
System.out.print("Subject: ");
//Gets the subject
System.out.println(message.getSubject());
System.out.print("HtmlBody: ");
//Gets the htmlbody
System.out.println(message.getHtmlBody());
System.out.print("TextBody: ");
//Gets the textbody
System.out.println(message.getTextBody());
System.out.print("HtmlBodyText: ");
//Gets the textbody from HTML
System.out.println(message.getHtmlBodyText());

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

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

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

Извлечение заголовков электронной почты

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

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

  1. Создайте экземпляр класса MailMessage.
  2. Загрузите сообщение электронной почты в экземпляр класса MailMessage.
  3. После загрузки сообщения электронной почты мы получим его необработанное содержимое. Сам класс MailMessage содержит такие свойства, как From, To, Cc, Subject и так далее. Эти свойства можно извлечь из заголовков.
  4. Отобразите необработанное содержимое.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
//Create MailMessage instance by loading an EML file
MailMessage message = MailMessage.load(dataDir + "test.eml");
System.out.println("Printing all Headers:\n\n");
//Print out all the headers
for (int i=0; i< message.getHeaders().size(); i++)
System.out.println(message.getHeaders().get(i));

Получение закодированных значений заголовков

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MailMessage mail = MailMessage.load(dataDir + "test.eml");
String decodedValue = mail.getHeaders().getDecodedValue("Thread-Topic");
System.out.println(decodedValue);

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

К ресурсам, привязанным к сообщению электронной почты, можно получить доступ и обрабатывать их программно. Метод 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-тела электронной почты как простого текста.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = Utils.getSharedDataDir(GetHTMLBodyAsPlainText.class) + "email/";
MailMessage mail = MailMessage.load(dataDir + "HtmlWithUrlSample.eml");
String body_with_url = mail.getHtmlBodyText(true);// body will contain URL
String body_without_url = mail.getHtmlBodyText(false);// body will not contain URL
System.out.println("Body with URL: " + body_with_url);
System.out.println("Body without URL: " + body_without_url);