Trabajando con el Buzón de Exchange y Mensajes
Obteniendo Información del Buzón Usando EWS
Puedes obtener información del buzón de un servidor Exchange llamando al método GetMailboxInfo de la clase IEWSClient. Retorna una instancia del tipo ExchangeMailboxInfo. Obtén información del buzón desde propiedades como MailboxUri, InboxUri, y DraftsUri. Este artículo muestra cómo acceder a la información del buzón usando los Servicios Web de Exchange.
Para conectarte al servidor Exchange usando los Servicios Web de Exchange (EWS), utiliza la clase IEWSClient. Esta clase utiliza EWS para conectarse y gestionar elementos en un servidor Exchange. El siguiente fragmento de código te muestra cómo obtener información del buzón usando los servicios web de exchange.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of EWSClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Get mailbox size, exchange mailbox info, Mailbox and Inbox folder URI | |
System::Console::WriteLine(System::String(u"Mailbox size: ") + client->GetMailboxSize() + u" bytes"); | |
System::SharedPtr<ExchangeMailboxInfo> mailboxInfo = client->GetMailboxInfo(); | |
System::Console::WriteLine(System::String(u"Mailbox URI: ") + mailboxInfo->get_MailboxUri()); | |
System::Console::WriteLine(System::String(u"Inbox folder URI: ") + mailboxInfo->get_InboxUri()); | |
System::Console::WriteLine(System::String(u"Sent Items URI: ") + mailboxInfo->get_SentItemsUri()); | |
System::Console::WriteLine(System::String(u"Drafts folder URI: ") + mailboxInfo->get_DraftsUri()); |
Enviando Mensajes de Correo Electrónico
Puedes enviar mensajes de correo electrónico usando un servidor Exchange con el método IEWSClient->Send() que acepta una instancia de MailMessage como parámetro y envía el correo. Este artículo explica cómo enviar mensajes de correo electrónico usando los Servicios Web de Exchange.
El siguiente fragmento de código te muestra cómo enviar mensajes de correo electrónico usando IEWSClient.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of IEWSClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Create instance of type MailMessage | |
System::SharedPtr<MailMessage> msg = System::MakeObject<MailMessage>(); | |
msg->set_From(MailAddress::to_MailAddress(u"sender@domain.com")); | |
msg->set_To(MailAddressCollection::to_MailAddressCollection(u"recipient@ domain.com ")); | |
msg->set_Subject(u"Sending message from exchange server"); | |
msg->set_HtmlBody(u"<h3>sending message from exchange server</h3>"); | |
// Send the message | |
client->Send(msg); |
Leyendo Correos Electrónicos del Buzón de Otro Usuario
Algunas cuentas en los servidores Exchange tienen el derecho de acceder a múltiples buzones, y algunos usuarios tienen múltiples cuentas de correo electrónico en el mismo servidor Exchange. En ambos casos, los usuarios pueden acceder a los buzones de otros usuarios usando Aspose.Email. Esta API proporciona un mecanismo para acceder a carpetas y correos electrónicos de otros buzones usando la clase IEWSClient. Esta funcionalidad se puede lograr utilizando el método sobrecargado GetMailboxInfo() y proporcionando la dirección de correo electrónico del usuario como un parámetro.
El siguiente fragmento de código te muestra cómo leer correos electrónicos usando la clase IEWSClient.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of EWSClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Get Exchange mailbox info of other email account | |
System::SharedPtr<ExchangeMailboxInfo> mailboxInfo = client->GetMailboxInfo(u"otherUser@domain.com"); |
Listando Mensajes
Una lista de los mensajes de correo electrónico en un buzón de Exchange se puede obtener llamando al método ListMessages. Obtén la información básica sobre los mensajes, como asunto, de, a y ID del mensaje, usando el método ListMessages.
Listado Simple de Mensajes
Para listar los mensajes en un buzón de Exchange:
- Crea una instancia de la clase IEWSClient.
- Llama al método ListMessages para obtener la colección de mensajes.
- Recorre la colección y muestra la información del mensaje.
El siguiente fragmento de código te muestra cómo conectarte a un servidor exchange usando EWS y listar mensajes de la carpeta de entrada.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of ExchangeWebServiceClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Call ListMessages method to list messages info from Inbox | |
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri()); | |
// Loop through the collection to display the basic information | |
for (auto msgInfo : System::IterateOver(msgCollection)) | |
{ | |
System::Console::WriteLine(System::String(u"Subject: ") + msgInfo->get_Subject()); | |
if (msgInfo->get_From() != nullptr) | |
System::Console::WriteLine(System::String(u"From: ") + msgInfo->get_From()->ToString()); | |
System::Console::WriteLine(System::String(u"To: ") + msgInfo->get_To()->ToString()); | |
System::Console::WriteLine(System::String(u"Message ID: ") + msgInfo->get_MessageId()); | |
System::Console::WriteLine(System::String(u"Unique URI: ") + msgInfo->get_UniqueUri()); | |
} |
Listando Mensajes desde Diferentes Carpetas
El fragmento de código anterior lista todos los mensajes en la carpeta de entrada. También es posible obtener la lista de mensajes de otras carpetas. El método ListMessages acepta una URI de carpeta como parámetro. Siempre que la URI de la carpeta sea válida, puedes obtener la lista de mensajes de esa carpeta. Usa el IEWSClient->get_MailboxInfo->xxxFolderUri propiedad para obtener la URI de diferentes carpetas. El resto del código es el mismo que para obtener una lista de mensajes. El siguiente fragmento de código te muestra cómo listar mensajes desde diferentes carpetas usando EWS.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of EWSClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Get folder URI | |
System::String strFolderURI = System::String::Empty; | |
strFolderURI = client->get_MailboxInfo()->get_InboxUri(); | |
strFolderURI = client->get_MailboxInfo()->get_DeletedItemsUri(); | |
strFolderURI = client->get_MailboxInfo()->get_DraftsUri(); | |
strFolderURI = client->get_MailboxInfo()->get_SentItemsUri(); | |
// Get list of messages from the specified folder | |
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(strFolderURI); |
Listando Mensajes con Soporte de Paginación
El siguiente fragmento de código te muestra cómo obtener una lista de mensajes con soporte de paginación.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Create some test messages to be added to server for retrieval later | |
int32_t messagesNum = 12; | |
int32_t itemsPerPage = 5; | |
System::SharedPtr<MailMessage> message; | |
for (int32_t i = 0; i < messagesNum; i++) | |
{ | |
message = System::MakeObject<MailMessage>(u"from@domain.com", u"to@domain.com", System::String(u"EMAILNET-35157_1 - ") + System::ObjectExt::ToString(System::Guid::NewGuid()), u"EMAILNET-35157 Move paging parameters to separate class"); | |
client->AppendMessage(client->get_MailboxInfo()->get_InboxUri(), message); | |
} | |
// Verfiy that the messages have been added to the server | |
System::SharedPtr<ExchangeMessageInfoCollection> totalMessageInfoCol = client->ListMessages(client->get_MailboxInfo()->get_InboxUri()); | |
System::Console::WriteLine(totalMessageInfoCol->get_Count()); | |
/// /////////////// RETREIVING THE MESSAGES USING PAGING SUPPORT //////////////////////////////////// | |
System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<ExchangeMessagePageInfo>>> pages = System::MakeObject<System::Collections::Generic::List<System::SharedPtr<ExchangeMessagePageInfo>>>(); | |
System::SharedPtr<ExchangeMessagePageInfo> pageInfo = client->ListMessagesByPage(client->get_MailboxInfo()->get_InboxUri(), itemsPerPage); | |
// Total Pages Count | |
System::Console::WriteLine(pageInfo->get_TotalCount()); | |
pages->Add(pageInfo); | |
while (!pageInfo->get_LastPage()) | |
{ | |
pageInfo = client->ListMessagesByPage(client->get_MailboxInfo()->get_InboxUri(), itemsPerPage, pageInfo->get_PageOffset() + 1); | |
pages->Add(pageInfo); | |
} | |
int32_t retrievedItems = 0; | |
for (auto pageCol : System::IterateOver(pages)) | |
{ | |
retrievedItems += pageCol->get_Items()->get_Count(); | |
} | |
// Verify total message count using paging | |
System::Console::WriteLine(retrievedItems); |
Obteniendo Información del Tipo de Mensaje desde ExchangeMessageInfo
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
const System::String mailboxUri = u"https://exchange/ews/exchange.asmx"; | |
const System::String domain = u""; | |
const System::String username = u"username@ASE305.onmicrosoft.com"; | |
const System::String password = u"password"; | |
System::SharedPtr<System::Net::NetworkCredential> credentials = System::MakeObject<System::Net::NetworkCredential>(username, password, domain); | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
System::SharedPtr<ExchangeMessageInfoCollection> list = client->ListMessages(client->get_MailboxInfo()->get_DeletedItemsUri()); | |
System::Console::WriteLine(System::ObjectExt::ToString(list->idx_get(0)->get_MessageInfoType())); |
Guardando Mensajes
Este artículo muestra cómo obtener mensajes de un buzón de servidor Exchange y guardarlos en disco en formatos EML y MSG:
- Guardar como EML en disco.
- Guardar en un flujo de memoria.
- Guardar como MSG.
Guardando Mensajes en EML
Para obtener mensajes y guardar en formato EML:
- Crea una instancia de la clase IEWSClient.
- Proporciona el mailboxUri, nombre de usuario, contraseña y dominio.
- Llama al método IEWSClient->ListMessages() para obtener una instancia de la colección ExchangeMessagesInfoCollection.
- Recorre la colección ExchangeMessagesInfoCollection para obtener la URI única de cada mensaje.
- Llama al método IEWSClient->SaveMessage() y pasa la URI única y la ubicación de guardado como parámetros.
El siguiente fragmento de código te muestra cómo usar EWS para conectarte al servidor Exchange y guardar mensajes como archivos EML.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
System::String dataDir = GetDataDir_Exchange(); | |
// Create instance of IEWSClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Call ListMessages method to list messages info from Inbox | |
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri()); | |
// Loop through the collection to get Message URI | |
for (auto msgInfo : System::IterateOver(msgCollection)) | |
{ | |
System::String strMessageURI = msgInfo->get_UniqueUri(); | |
// Now save the message in disk | |
client->SaveMessage(strMessageURI, dataDir + msgInfo->get_MessageId() + u"out.eml"); | |
} |
Guardando Mensajes en un Flujo de Memoria
En lugar de guardar archivos EML en disco, es posible guardarlos en un flujo de memoria. Esto es útil cuando deseas guardar el flujo en algún lugar de almacenamiento como una base de datos. Una vez que el flujo ha sido guardado en una base de datos, puedes recargar el archivo EML en la clase MailMessage. El siguiente fragmento de código te muestra cómo guardar mensajes de un buzón de servidor Exchange en un flujo de memoria usando EWS.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Call ListMessages method to list messages info from Inbox | |
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri()); | |
// Loop through the collection to get Message URI | |
for (auto msgInfo : System::IterateOver(msgCollection)) | |
{ | |
System::String strMessageURI = msgInfo->get_UniqueUri(); | |
// Now save the message in memory stream | |
System::SharedPtr<System::IO::MemoryStream> stream = System::MakeObject<System::IO::MemoryStream>(); | |
client->SaveMessage(strMessageURI, datadir + stream); | |
} |
Guardando Mensajes en Formato MSG
El método IEWSClient->SaveMessage() puede guardar directamente el mensaje en formato EML. Para guardar los mensajes en formato MSG, primero, llama al método IEWSClient->FetchMessage() que retorna una instancia de la clase MailMessage. Luego, llama al método MailMessage->Save() para guardar el mensaje en MSG. El siguiente fragmento de código te muestra cómo obtener mensajes de un buzón de servidor Exchange y guardarlos en formato MSG usando EWS.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of EWSClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Call ListMessages method to list messages info from Inbox | |
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri()); | |
int32_t count = 0; | |
// Loop through the collection to get Message URI | |
for (auto msgInfo : System::IterateOver(msgCollection)) | |
{ | |
System::String strMessageURI = msgInfo->get_UniqueUri(); | |
// Now get the message details using FetchMessage() and Save message as Msg | |
System::SharedPtr<MailMessage> message = client->FetchMessage(strMessageURI); | |
message->Save(dataDir + (count++) + u"_out.msg", SaveOptions::get_DefaultMsgUnicode()); | |
} |
Obteniendo ExchangeMessageInfo desde la URI del Mensaje
Un mensaje de correo electrónico se representa por su identificador único, URI, y es una parte integral del objeto ExchangeMessageInfo. En caso de que solo se disponga de la URI del mensaje, entonces el objeto ExchangeMessageInfo también se puede recuperar usando esta información disponible. La versión sobrecargada de ListMessages toma una lista de Ids y retorna una colección de ExchangeMessageInfoCollection. El siguiente fragmento de código te muestra cómo obtener ExchangeMessageInfo desde la URI del mensaje.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
System::SharedPtr<System::Collections::Generic::List<System::String>> ids = System::MakeObject<System::Collections::Generic::List<System::String>>(); | |
System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<MailMessage>>> messages = System::MakeObject<System::Collections::Generic::List<System::SharedPtr<MailMessage>>>(); | |
for (int32_t i = 0; i < 5; i++) | |
{ | |
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>(u"user@domain.com", u"receiver@domain.com", System::String(u"EMAILNET-35033 - ") + System::ObjectExt::ToString(System::Guid::NewGuid()), u"EMAILNET-35033 Messages saved from Sent Items folder doesn't contain 'To' field"); | |
messages->Add(message); | |
System::String uri = client->AppendMessage(message); | |
ids->Add(uri); | |
} | |
System::SharedPtr<ExchangeMessageInfoCollection> messageInfoCol = client->ListMessages(ids); | |
for (auto messageInfo : System::IterateOver(messageInfoCol)) | |
{ | |
// Do something ... | |
System::Console::WriteLine(messageInfo->get_UniqueUri()); | |
} |
Obteniendo Mensajes de un Buzón de Servidor Exchange
El método ListMessages() se usa para obtener una lista de mensajes de un buzón del servidor Exchange. El método ListMessages() obtiene información básica sobre los mensajes, por ejemplo, el asunto, el ID del mensaje, de y a. Para obtener los detalles completos del mensaje, Aspose.Email proporciona el método IEWSClient->FetchMessage(). Este método acepta la URI del mensaje como parámetro y retorna una instancia de la clase MailMessage. La clase MailMessage proporciona detalles del mensaje como el cuerpo, encabezados y adjuntos. Para obtener mensajes del Buzón del Servidor Exchange:
- Crea una instancia del tipo IEWSClient.
- Especifica el nombre del servidor, nombre de usuario, contraseña y dominio.
- Llama al método IEWSClient->ListMessages() para obtener la ExchangeMessagesInfoCollection.
- Recorre la colección ExchangeMessagesInfoCollection para obtener los valores de ExchangeMessageInfo->get_UniqueUri().
- Llama a IEWSClient->FetchMessage() y pasa ExchangeMessageInfo->get_UniqueUri() como parámetro.
El siguiente fragmento de código demuestra la obtención de todos los mensajes usando EWS.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of ExchangeWebServiceClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Call ListMessages method to list messages info from Inbox | |
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri()); | |
// Loop through the collection to get Message URI | |
for (auto msgInfo : System::IterateOver(msgCollection)) | |
{ | |
System::String strMessageURI = msgInfo->get_UniqueUri(); | |
// Now get the message details using FetchMessage() | |
System::SharedPtr<MailMessage> msg = client->FetchMessage(strMessageURI); | |
for (auto att : System::IterateOver(msg->get_Attachments())) | |
{ | |
System::Console::WriteLine(System::String(u"Attachment Name: ") + att->get_Name()); | |
} | |
} |
Tamaño del Mensaje Preobtenido
Microsoft Outlook InterOp proporciona la función de recuperar el tamaño del mensaje antes de realmente obtener el mensaje completo del servidor. En el caso de la API de Aspose.Email, la información resumida recuperada del servidor Exchange está representada por la clase ExchangeMessageInfo. Proporciona la función de recuperar el tamaño del mensaje usando la propiedad Size. Con el fin de recuperar el tamaño del mensaje, se utiliza la llamada estándar a IEWSClient->ListMessages() para recuperar la ExchangeMessagesInfoCollection. El siguiente fragmento de código te muestra cómo mostrar el tamaño del mensaje usando la ExchangeMessageInfo clase.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of ExchangeWebServiceClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Call ListMessages method to list messages info from Inbox | |
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri()); | |
// Loop through the collection to display the basic information | |
for (auto msgInfo : System::IterateOver(msgCollection)) | |
{ | |
System::Console::WriteLine(System::String(u"Subject: ") + msgInfo->get_Subject()); | |
if (msgInfo->get_From() != nullptr) | |
System::Console::WriteLine(System::String(u"From: ") + msgInfo->get_From()->ToString()); | |
if (msgInfo->get_To() != nullptr) | |
System::Console::WriteLine(System::String(u"To: ") + msgInfo->get_To()->ToString()); | |
System::Console::WriteLine(System::String(u"Message Size: ") + msgInfo->get_Size()); | |
System::Console::WriteLine(u"=================================="); | |
} |
Descargar Mensajes de Carpetas Públicas
Microsoft Exchange Server permite a los usuarios crear carpetas públicas y publicar mensajes en ellas. Para hacer esto a través de tu aplicación, usa la clase EWSClient de Aspose.Email para conectarte al servidor Exchange y leer y descargar mensajes y publicaciones de carpetas públicas. El siguiente fragmento de código te muestra cómo leer todas las carpetas públicas y subcarpetas, y listar y descargar cualquier mensaje encontrado en estas carpetas. Este ejemplo solo funciona con Microsoft Exchange Server 2007 o superior, ya que solo estos son compatibles con EWS.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
static String dataDir = GetDataDir_Exchange(); | |
String username; | |
String password; | |
String domain; | |
String mailboxUri; | |
void ListMessagesFromSubFolder(System::SharedPtr<Aspose::Email::Clients::Exchange::ExchangeFolderInfo> publicFolder, System::SharedPtr<Aspose::Email::Clients::Exchange::WebService::IEWSClient> client) | |
{ | |
System::Console::WriteLine(System::String(u"Folder Name: ") + publicFolder->get_DisplayName()); | |
System::SharedPtr<ExchangeMessageInfoCollection> msgInfoCollection = client->ListMessagesFromPublicFolder(publicFolder); | |
for (auto messageInfo : System::IterateOver(msgInfoCollection)) | |
{ | |
System::SharedPtr<MailMessage> msg = client->FetchMessage(messageInfo->get_UniqueUri()); | |
System::Console::WriteLine(msg->get_Subject()); | |
msg->Save(dataDir + msg->get_Subject() + u".msg", SaveOptions::get_DefaultMsgUnicode()); | |
} | |
// Call this method recursively for any subfolders | |
if (publicFolder->get_ChildFolderCount() > 0) | |
{ | |
System::SharedPtr<ExchangeFolderInfoCollection> subfolders = client->ListSubFolders(publicFolder); | |
for (System::SharedPtr<Aspose::Email::Clients::Exchange::ExchangeFolderInfo> subfolder : System::IterateOver(subfolders)) | |
{ | |
ListMessagesFromSubFolder(subfolder, client); | |
} | |
} | |
} | |
void ReadPublicFolders() | |
{ | |
System::SharedPtr<System::Net::NetworkCredential> credential = System::MakeObject<System::Net::NetworkCredential>(username, password, domain); | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
System::SharedPtr<ExchangeFolderInfoCollection> folders = client->ListPublicFolders(); | |
for (auto publicFolder : System::IterateOver(folders)) | |
{ | |
System::Console::WriteLine(System::String(u"Name: ") + publicFolder->get_DisplayName()); | |
System::Console::WriteLine(System::String(u"Subfolders count: ") + publicFolder->get_ChildFolderCount()); | |
ListMessagesFromSubFolder(publicFolder, client); | |
} | |
} | |
void DownloadMessagesFromPublicFolders() | |
{ | |
try | |
{ | |
ReadPublicFolders(); | |
} | |
catch (System::Exception& ex) | |
{ | |
System::Console::WriteLine(ex.get_Message()); | |
} | |
} |
Moviendo Mensajes
Puedes mover mensajes de correo electrónico de una carpeta a otra con la ayuda del método Move de la clase IEWSClient. Toma los siguientes parámetros:
- La URI única del mensaje que se va a mover.
- La URI única de la carpeta de destino.
Moviendo Mensajes entre Carpetas
El siguiente fragmento de código te muestra cómo mover un mensaje en un buzón de la carpeta de entrada a una carpeta llamada Procesados. En este ejemplo, la aplicación:
- Lee los mensajes de la carpeta de entrada.
- Procesa algunos de los mensajes según algunos criterios (en este ejemplo, encontramos una palabra clave en el asunto del mensaje).
- Mueve los mensajes que cumplen con la condición dada a la carpeta procesada.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of IEWSClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
System::SharedPtr<ExchangeMailboxInfo> mailboxInfo = client->GetMailboxInfo(); | |
// List all messages from Inbox folder | |
System::Console::WriteLine(u"Listing all messages from Inbox...."); | |
System::SharedPtr<ExchangeMessageInfoCollection> msgInfoColl = client->ListMessages(mailboxInfo->get_InboxUri()); | |
for (auto msgInfo : System::IterateOver(msgInfoColl)) | |
{ | |
// Move message to "Processed" folder, after processing certain messages based on some criteria | |
if (msgInfo->get_Subject() != nullptr && msgInfo->get_Subject().ToLower().Contains(u"process this message") == true) | |
{ | |
client->MoveItem(mailboxInfo->get_DeletedItemsUri(), msgInfo->get_UniqueUri()); | |
// EWS | |
System::Console::WriteLine(System::String(u"Message moved....") + msgInfo->get_Subject()); | |
} | |
else { } | |
} |
Eliminando Mensajes
Puedes eliminar mensajes de correo electrónico de una carpeta con la ayuda del método IEWSClient->DeleteMessage. Toma la URI única del mensaje como parámetro.
El siguiente fragmento de código te muestra cómo eliminar un mensaje de la carpeta de entrada. Para el propósito de este ejemplo, el código:
- Lee los mensajes de la carpeta de entrada.
- Procesa los mensajes según algunos criterios (en este ejemplo, encontramos una palabra clave en el asunto del mensaje).
- Elimina el mensaje.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Create instance of IEWSClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
System::SharedPtr<ExchangeMailboxInfo> mailboxInfo = client->GetMailboxInfo(); | |
// List all messages from Inbox folder | |
System::Console::WriteLine(u"Listing all messages from Inbox...."); | |
System::SharedPtr<ExchangeMessageInfoCollection> msgInfoColl = client->ListMessages(mailboxInfo->get_InboxUri()); | |
for (auto msgInfo : System::IterateOver(msgInfoColl)) | |
{ | |
// Delete message based on some criteria | |
if (msgInfo->get_Subject() != nullptr && msgInfo->get_Subject().ToLower().Contains(u"delete") == true) | |
{ | |
client->DeleteMessage(msgInfo->get_UniqueUri()); | |
// EWS | |
System::Console::WriteLine(System::String(u"Message deleted....") + msgInfo->get_Subject()); | |
} | |
else { } | |
} |
Copiando Mensajes
La API de Aspose.Email permite copiar un mensaje de una carpeta a otra utilizando el método IEWSClient->CopyItem. La versión sobrecargada de este método devuelve la URI única del mensaje copiado como se muestra en este artículo.
Copiando un Mensaje a Otra Carpeta
El siguiente fragmento de código te muestra cómo copiar un mensaje a otra carpeta.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
try | |
{ | |
// Create instance of EWSClient class by giving credentials | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>(u"from@domain.com", u"to@domain.com", System::String(u"EMAILNET-34997 - ") + System::ObjectExt::ToString(System::Guid::NewGuid()), u"EMAILNET-34997 Exchange: Copy a message and get reference to the new Copy item"); | |
System::String messageUri = client->AppendMessage(message); | |
System::String newMessageUri = client->CopyItem(messageUri, client->get_MailboxInfo()->get_DeletedItemsUri()); | |
} | |
catch (System::Exception& ex) | |
{ | |
System::Console::WriteLine(ex.get_Message()); | |
} |