Hoe een e-mailbericht op schijf op te slaan in C#

In deze stapsgewijze zelfstudie leggen we uit hoe u een e-mailbericht op schijf kunt opslaan in C#. Het e-mailbericht kan worden opgeslagen als EML or MSG bestandsindelingen op de schijf. We krijgen berichten van de Exchange-e-mailbox, maar u kunt ook berichten van andere mailboxen ontvangen en op schijf opslaan.

Stappen om e-mailberichten op schijf op te slaan in C#

  1. Ontvang een Aspose.Email for .NET pakket van NuGet.org
  2. Neem Aspose.Email.Clients.Exchange en Aspose.Email.Clients.Exchange.WebService naamruimten op
  3. Licentie instellen met behulp van SetLicense-methode
  4. Geef Exchange Server-accountgegevens op
  5. Maak een object van de klasse NetworkCredential
  6. Maak een nieuw Exchange-clientobject van EWSClient Class
  7. Loop door alle e-mailberichten die uit de mailbox zijn gelezen
  8. Sla elk afzonderlijk e-mailbericht op in EML or MSG file formats

Door de bovenstaande eenvoudige stappen te volgen, kunt u een e-mailbericht naar EML opslaan in C#-code op de schijf. In ons vorige onderwerp hebben we uitgelegd dat hoe e-mail te verzenden in C# de Gmail SMTP-server gebruikt. In dit onderwerp gebruiken we in plaats daarvan de Exchange-server om de e-mails op te halen en vervolgens op schijf op te slaan.

Code om e-mailbericht op schijf op te slaan in C#

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);
}
}
}
}

In de bovenstaande code slaan we e-mailberichten op als .eml- en .msg-indeling. Houd er rekening mee dat we in deze code alle berichten ophalen en ze één voor één opslaan in afzonderlijke bestanden. Als uw inbox echter veel berichten bevat, moet u de aanpak dienovereenkomstig aanpassen.

 Nederlands