Как сохранить сообщение электронной почты на диск в C#

В этом пошаговом руководстве мы объясним, как сохранить сообщение электронной почты на диск в C#. Сообщение электронной почты можно сохранить на диске в виде файлов EML or MSG форматов. Мы будем получать сообщения из почтового ящика Exchange, однако вы можете получать сообщения и из других почтовых ящиков и сохранять их на диск.

Действия по сохранению сообщения электронной почты на диск в C#

  1. Получите пакет Aspose.Email for .NET с сайта NuGet.org.
  2. Включить пространства имен Aspose.Email.Clients.Exchange и Aspose.Email.Clients.Exchange.WebService
  3. Установить лицензию с помощью метода SetLicense
  4. Укажите информацию об учетной записи Exchange Server
  5. Создайте объект класса NetworkCredential
  6. Создайте новый клиентский объект Exchange класса EWSClient.
  7. Перебрать все сообщения электронной почты, прочитанные из почтового ящика.
  8. Сохраняйте каждое отдельное сообщение электронной почты в EML or MSG file formats.

Следуя приведенным выше простым шагам, вы можете сохранить сообщение электронной почты в EML в коде C# на диске. В предыдущем разделе мы объясняли как отправить письмо на С# использование SMTP-сервера Gmail. Однако в этом разделе вместо этого мы используем сервер Exchange для получения сообщений электронной почты и последующего их сохранения на диск.

Код для сохранения сообщения электронной почты на диск в С#

using System;
using System.Net;
//Add reference to Aspose.Email for .NET API
//Use following namespaces to save email message to disk
using Aspose.Email.Clients.Exchange;
using Aspose.Email.Clients.Exchange.WebService;
namespace SaveEmailMessageToDisk
{
class Program
{
static void Main(string[] args)
{
//Set license before saving email message to disk
Aspose.Email.License AsposeEmailLicense = new Aspose.Email.License();
AsposeEmailLicense.SetLicense(@"c:\asposelicense\license.lic");
//setup account information
const string MailBoxUri = "https://outlook.office365.com/ews/exchange.asmx";
const string Domain = @"";
const string Username = @"username@outlook.com";
const string Password = @"userpassword";
NetworkCredential CredentiaDetails =
new NetworkCredential(Username, Password, Domain);
//create email client
IEWSClient EmailClient = EWSClient.GetEWSClient(MailBoxUri, CredentiaDetails);
try
{
//get mail box
ExchangeMailboxInfo MailBoxInfo = EmailClient.GetMailboxInfo();
//get list of all messages from the mail box
ExchangeMessageInfoCollection MessagesCollection =
EmailClient.ListMessages(EmailClient.MailboxInfo.InboxUri);
//Loop through email messages
int MessageCount = 1;
foreach (ExchangeMessageInfo MessageInfo in MessagesCollection)
{
string strMessageURI = MessageInfo.UniqueUri;
//get message details
Console.WriteLine("Subject: " + MessageInfo.Subject);
Console.WriteLine("From: " + MessageInfo.From.ToString());
Console.WriteLine("To: " + MessageInfo.To.ToString());
Console.WriteLine("Message ID: " + MessageInfo.MessageId);
Console.WriteLine("Unique URI: " + MessageInfo.UniqueUri);
//save each message to disk
EmailClient.SaveMessage(strMessageURI, "Messsage_" + MessageCount + ".eml");
EmailClient.SaveMessage(strMessageURI, "Messsage_" + MessageCount + ".msg");
MessageCount++;
}
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}
}
}
}

В приведенном выше коде мы сохраняем сообщения электронной почты в форматах .eml и .msg. Обратите внимание, что в этом коде мы извлекаем все сообщения и сохраняем их одно за другим в отдельных файлах. Однако, если в вашем почтовом ящике много сообщений, вам необходимо соответствующим образом изменить подход.

 Русский