Извлечь содержимое сообщения электронной почты на C#

Отобразить информацию о письме

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

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

Следующий фрагмент кода показывает, как отобразить информацию о письме на экране.


// Create MailMessage instance by loading an Eml file
var message = MailMessage.Load("test.eml", new EmlLoadOptions());

// Gets the sender info, recipient info, Subject, htmlbody and textbody
Console.Write("From:");
Console.WriteLine(message.From);
Console.Write("To:");
Console.WriteLine(message.To);
Console.Write("Subject:");
Console.WriteLine(message.Subject);
Console.WriteLine("HtmlBody:");
Console.WriteLine(message.HtmlBody);
Console.WriteLine("TextBody");
Console.WriteLine(message.Body);

Извлечь заголовки письма

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

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

Этот MailMessage сам класс содержит свойства, такие как From, To, Cc, Subject и т.д. Эти свойства можно извлечь из заголовков.

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

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

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

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
MailMessage mailMessage = MailMessage.Load(dataDir + "emlWithHeaders.eml");
string decodedValue = mailMessage.Headers.GetDecodedValue("Thread-Topic");
Console.WriteLine(decodedValue);

Извлечь тело письма

Получить тело в виде простого текста

Этот Тело свойство возвращает текстовое представление тела сообщения.

string plainTextBody = mailMessage.Body;

Примечание: если в сообщении присутствует часть MIME text/plain, свойство возвращает её текстовые данные. В противном случае оно возвращает отдельный текстовый контент из HtmlBody свойство без разметки HTML.

Получить HTML‑тело как простой текст

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

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

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_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

Console.WriteLine("Body with URL: " + body_with_url);
Console.WriteLine("Body without URL: " + body_without_url);

Доступ к адресу X.500 Exchange

Этот MailAddress Создание и сохранение сообщений Outlook X500Address свойство, предназначенное для раскрытия адресов Exchange в формате X.500, если они присутствуют в сообщении. Обеспечивает только чтение строки адреса X.500 (Exchange) для MailAddress экземпляры и возвращает адрес X.500, если он включён в метаданные сообщения, иначе возвращает null или пустую строку. Парсинг не требуется — свойство возвращает сырой строковый X.500.

var mailMessage = MailMessage.Load(fileName);
string exaddr = mailMessage.From.X500Address;