Trabajar con conversaciones en MS Exchange Server en C#

Las conversaciones en Microsoft Exchange Server se conocen como el grupo de mensajes de correo electrónico en un hilo. En palabras simples, se sabe que un correo electrónico y todas sus respuestas son una conversación. En este artículo, le mostraremos cómo trabajar con conversaciones en MS Exchange Server mediante programación. En particular, aprenderá a buscar, copiar, mover y eliminar conversaciones en MS Exchange Server en C# .NET.

C# .NET API para trabajar con conversaciones en MS Exchange Server

Para administrar las conversaciones en Microsoft Exchange Server, usaremos Aspose.Email for .NET. Es una potente API que proporciona una gama de características para implementar aplicaciones de clientes de correo electrónico. Además, le permite acceder a varios servicios de MS Exchange Server sin problemas. Puede descargar la DLL de la API o instalarla desde NuGet con el siguiente comando.

PM> Install-Package Aspose.Email

Encuentra conversaciones en MS Exchange Server en C#

Los siguientes son los pasos para encontrar conversaciones desde una carpeta en MS Exchange Server en C#.

El siguiente ejemplo de código muestra cómo encontrar conversaciones desde una carpeta en MS Exchange Server en C#.

string mailboxUri = "https://ex2010/ews/exchange.asmx";
string username = "test.exchange";
string password = "pwd";
string domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);

// Conéctese al servidor MS Exchange
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
Console.WriteLine("Connected to Exchange");

// Obtener conversaciones de la bandeja de entrada
ExchangeConversation[] conversations = client.FindConversations(client.MailboxInfo.InboxUri);

// Mostrar todas las conversaciones
foreach (ExchangeConversation conversation in conversations)
{
    // Mostrar propiedades de conversación como Id y Tema
    Console.WriteLine("Topic: " + conversation.ConversationTopic);
    Console.WriteLine("Flag Status: " + conversation.FlagStatus.ToString());
    Console.WriteLine();
}

Copie una conversación en MS Exchange Server en C#

También puedes copiar las conversaciones de una carpeta a otra sin escribir un código complejo. Como demostración, echemos un vistazo a cómo copiar conversaciones desde la bandeja de entrada a la carpeta de elementos eliminados de Exchange Server en C# .NET.

El siguiente ejemplo de código muestra cómo copiar una conversación en MS Exchange Server usando C# .NET.

string mailboxUri = "https://ex2010/ews/exchange.asmx";
string username = "test.exchange";
string password = "pwd";
string domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);

// Conéctese al servidor MS Exchange
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
Console.WriteLine("Connected to Exchange");

// Obtener conversaciones
ExchangeConversation[] conversations = client.FindConversations(client.MailboxInfo.InboxUri);

foreach (ExchangeConversation conversation in conversations)
{
    Console.WriteLine("Topic: " + conversation.ConversationTopic);

    // Copie el elemento de conversación en función de alguna condición.
    if (conversation.ConversationTopic.Contains("test email") == true)
    {
        client.CopyConversationItems(conversation.ConversationId, client.MailboxInfo.DeletedItemsUri);
        Console.WriteLine("Copied the conversation item to another folder");
    }
}

Mover una conversación en MS Exchange Server en C#

En la sección anterior, simplemente copiamos conversaciones de una carpeta a otra. Sin embargo, en ciertos casos, es posible que deba mover una conversación a una carpeta en particular. Los siguientes son los pasos para mover conversaciones en MS Exchange Server en C# .NET.

El siguiente ejemplo de código muestra cómo mover una conversación en MS Exchange Server usando C# .NET.

string mailboxUri = "https://ex2010/ews/exchange.asmx";
string username = "test.exchange";
string password = "pwd";
string domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);

// Conéctese al servidor MS Exchange
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
Console.WriteLine("Connected to Exchange");

// Obtener conversaciones
ExchangeConversation[] conversations = client.FindConversations(client.MailboxInfo.InboxUri);

foreach (ExchangeConversation conversation in conversations)
{
    Console.WriteLine("Topic: " + conversation.ConversationTopic);

    // Mover el elemento de conversación en función de alguna condición
    if (conversation.ConversationTopic.Contains("test email") == true)
    {
        client.MoveConversationItems(conversation.ConversationId, client.MailboxInfo.DeletedItemsUri);
        Console.WriteLine("Moved the conversation item to another folder");
    }
}

Eliminar una conversación en MS Exchange Server en C#

Por último, pero no menos importante, echemos un vistazo a cómo eliminar una conversación de MS Exchange Server en C#.

El siguiente ejemplo de código muestra cómo eliminar una conversación de MS Exchange Server en C# .NET.

string mailboxUri = "https://ex2010/ews/exchange.asmx";
string username = "test.exchange";
string password = "pwd";
string domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);

// Conéctese al servidor MS Exchange
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
Console.WriteLine("Connected to Exchange");

// Obtener conversaciones
ExchangeConversation[] conversations = client.FindConversations(client.MailboxInfo.InboxUri);

foreach (ExchangeConversation conversation in conversations)
{
    Console.WriteLine("Topic: " + conversation.ConversationTopic);

    // Eliminar el elemento de conversación en función de alguna condición
    if (conversation.ConversationTopic.Contains("test email") == true)
    {
        client.DeleteConversationItems(conversation.ConversationId);
        Console.WriteLine("Deleted the conversation item");
    }
}

Obtenga una licencia de API gratuita

Puede obtener una licencia temporal gratuita para usar Aspose.Email for .NET sin limitaciones de evaluación.

Conclusión

En este artículo, ha aprendido a administrar conversaciones en Microsoft Exchange Server usando C#. Ha visto cómo buscar, copiar, mover y eliminar conversaciones en MS Exchange Server mediante programación en C#. Además, puede explorar la documentación para obtener más información sobre Aspose.Email for .NET. Además, puede hacer sus preguntas a través de nuestro foro.

Ver también