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