En este tutorial paso a paso, explicaremos cómo guardar un mensaje de correo electrónico en el disco en C#. El mensaje de correo electrónico se puede guardar como formatos de archivo EML or MSG en el disco. Recibiremos mensajes del buzón de correo electrónico de Exchange, sin embargo, también puede recibir mensajes de otros buzones de correo y guardarlos en el disco.
Pasos para guardar un mensaje de correo electrónico en el disco en C#
- Obtenga el paquete Aspose.Email for .NET de NuGet.org
- Incluir espacios de nombres Aspose.Email.Clients.Exchange y Aspose.Email.Clients.Exchange.WebService
- Establecer licencia con la ayuda del método SetLicense
- Proporcionar información de cuenta de Exchange Server
- Crear un objeto de la clase NetworkCredential
- Cree un nuevo objeto de cliente de Exchange de clase EWSClient
- Recorra todos los mensajes de correo electrónico leídos desde el buzón
- Guarde cada mensaje de correo electrónico individual en EML or MSG file formats
Siguiendo los sencillos pasos anteriores, puede guardar el mensaje de correo electrónico en EML en código C# en el disco. En nuestro tema anterior, explicamos cómo enviar un correo electrónico en C# usando el servidor SMTP de Gmail. Sin embargo, en este tema, usamos el servidor de Exchange para obtener los correos electrónicos y luego guardarlos en el disco.
Código para guardar el mensaje de correo electrónico en el disco en 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); | |
} | |
} | |
} | |
} |
En el código anterior, estamos guardando mensajes de correo electrónico como formatos .eml y .msg. Tenga en cuenta que en este código, estamos obteniendo todos los mensajes y guardándolos uno por uno en archivos separados. Sin embargo, si su bandeja de entrada tiene muchos mensajes, debe modificar el enfoque en consecuencia.