Trabajando con Adjuntos y Objetos Incrustados usando la Biblioteca C++ Email Parser
Gestión de Adjunts de Correo Electrónico
Un adjunto de correo electrónico es un archivo informático que se envía junto con un mensaje de correo electrónico. El archivo puede ser enviado como un mensaje separado así como parte del mensaje al que está adjunto. La clase Attachment se utiliza junto con la clase MailMessage. Todos los mensajes incluyen un cuerpo. Además del cuerpo, es posible que desees enviar archivos adicionales. Estos se envían como adjuntos y se representan como instancias de la clase Attachment. Puedes enviar cualquier número de adjuntos, pero el tamaño del adjunto está limitado por el servidor de correo. Gmail, por ejemplo, no admite tamaños de archivo mayores a 10MB.
¡Pruébalo!
Agrega o elimina adjuntos de correos electrónicos con la gratuita Aspose.Email Editor App.
Agregando un Adjunto
Para adjuntar un archivo a un correo electrónico, sigue estos pasos:
- Crea una instancia de la clase MailMessage.
- Crea una instancia de la clase Attachment.
- Carga el adjunto en la instancia de Attachment.
- Agrega la instancia de Attachment en la instancia de la clase MailMessage.
El siguiente fragmento de código muestra cómo agregar un adjunto a un correo electrónico.
For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C | |
// The path to the File directory. | |
System::String dataDir = RunExamples::GetDataDir_Email(); | |
// Create an instance of MailMessage class | |
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>(); | |
message->set_From(L"sender@sender.com"); | |
message->get_To()->Add(L"receiver@gmail.com"); | |
// Load an attachment | |
System::SharedPtr<Attachment> attachment = System::MakeObject<Attachment>(dataDir + L"1.txt"); | |
// Add Multiple Attachment in instance of MailMessage class and Save message to disk | |
message->get_Attachments()->Add(attachment); | |
message->AddAttachment(System::MakeObject<Attachment>(dataDir + L"1.jpg")); | |
message->AddAttachment(System::MakeObject<Attachment>(dataDir + L"1.doc")); | |
message->AddAttachment(System::MakeObject<Attachment>(dataDir + L"1.rar")); | |
message->AddAttachment(System::MakeObject<Attachment>(dataDir + L"1.pdf")); | |
message->Save(dataDir + L"outputAttachments_out.msg", SaveOptions::get_DefaultMsgUnicode()); |
Arriba, describimos cómo agregar adjuntos a tu mensaje de correo electrónico con Aspose.Email. Lo que sigue muestra cómo eliminar adjuntos y mostrar información sobre ellos en pantalla.
Eliminando un Adjunto
Para eliminar un adjunto, sigue los pasos indicados a continuación:
- Crea una instancia de la clase Attachment.
- Carga el adjunto en la instancia de la clase Attachment.
- Agrega el adjunto a la instancia de la clase MailMessage.
- Elimina los adjuntos de la instancia de la clase Attachment usando la instancia de la clase MailMessage.
El siguiente fragmento de código muestra cómo eliminar un adjunto.
For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C | |
// The path to the File directory. | |
System::String dataDir = RunExamples::GetDataDir_Email(); | |
System::String dstEmailRemoved = dataDir + L"RemoveAttachments.msg"; | |
// Create an instance of MailMessage class | |
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>(); | |
message->set_From(L"sender@sender.com"); | |
message->get_To()->Add(L"receiver@gmail.com"); | |
// Load an attachment | |
System::SharedPtr<Attachment> attachment = System::MakeObject<Attachment>(dataDir + L"1.txt"); | |
// Add Multiple Attachment in instance of MailMessage class and Save message to disk | |
message->get_Attachments()->Add(attachment); | |
message->AddAttachment(System::MakeObject<Attachment>(dataDir + L"1.jpg")); | |
message->AddAttachment(System::MakeObject<Attachment>(dataDir + L"1.doc")); | |
message->AddAttachment(System::MakeObject<Attachment>(dataDir + L"1.rar")); | |
message->AddAttachment(System::MakeObject<Attachment>(dataDir + L"1.pdf")); | |
// Remove attachment from your MailMessage and Save message to disk after removing a single attachment | |
message->get_Attachments()->Remove(attachment); | |
message->Save(dstEmailRemoved, SaveOptions::get_DefaultMsgUnicode()); | |
// Create a loop to display the no. of attachments present in email message | |
{ | |
auto getAttachment_enumerator = (message->get_Attachments())->GetEnumerator(); | |
decltype(getAttachment_enumerator->get_Current()) getAttachment; | |
while (getAttachment_enumerator->MoveNext() && (getAttachment = getAttachment_enumerator->get_Current(), true)) | |
{ | |
// Save your attachments here and Display the the attachment file name | |
getAttachment->Save(dataDir + L"/RemoveAttachments/" + L"attachment_out" + getAttachment->get_Name()); | |
System::Console::WriteLine(getAttachment->get_Name()); | |
} | |
} |
Mostrando el Nombre del Archivo Adjunto
Para mostrar el nombre del archivo adjunto, sigue estos pasos:
- Recorre los adjuntos en el mensaje de correo electrónico y
- Guarda cada adjunto.
- Muestra el nombre de cada adjunto en pantalla.
El siguiente fragmento de código muestra cómo mostrar el nombre de un archivo adjunto en la pantalla.
For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C | |
// Create a loop to display the no. of attachments present in email message | |
{ | |
auto attachment_enumerator = (message->get_Attachments())->GetEnumerator(); | |
decltype(attachment_enumerator->get_Current()) attachment; | |
while (attachment_enumerator->MoveNext() && (attachment = attachment_enumerator->get_Current(), true)) | |
{ | |
// Display the the attachment file name | |
System::Console::WriteLine(attachment->get_Name()); | |
} | |
} |
Extracción de Adjunts de Correo Electrónico
Este tema explica cómo extraer un adjunto de un archivo de correo electrónico. Un adjunto de correo electrónico es un archivo informático que se envía junto con un mensaje de correo electrónico. El archivo puede ser enviado como un mensaje separado así como parte del mensaje al que está adjunto. Todos los mensajes de correo electrónico incluyen un cuerpo. Además del cuerpo, es posible que desees enviar archivos adicionales. Estos se envían como adjuntos y se representan como instancias de la clase Attachment. La clase Attachment se utiliza con la clase MailMessage para trabajar con adjuntos. Para extraer adjuntos de un mensaje de correo electrónico, sigue estos pasos:
- Crea una instancia de la clase MailMessage.
- Carga un archivo de correo electrónico en la instancia de MailMessage.
- Crea una instancia de la clase Attachment y úsala en un bucle para extraer todos los adjuntos.
- Guarda el adjunto y muéstralo en pantalla.
- Especifica la dirección del remitente y del destinatario en la instancia de MailMessage.
- Los fragmentos de código extraen adjuntos de un correo electrónico.
Adjuntos extraídos en el correo |
---|
![]() |
El siguiente fragmento de código muestra cómo extraer adjuntos de correo electrónico. |
For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C | |
// The path to the File directory. | |
System::String dataDir = RunExamples::GetDataDir_Email(); | |
// Create an instance of MailMessage and load an email file | |
System::SharedPtr<MailMessage> mailMsg = MailMessage::Load(dataDir + L"Message.msg", System::MakeObject<MsgLoadOptions>()); | |
{ | |
auto attachment_enumerator = (mailMsg->get_Attachments())->GetEnumerator(); | |
decltype(attachment_enumerator->get_Current()) attachment; | |
while (attachment_enumerator->MoveNext() && (attachment = attachment_enumerator->get_Current(), true)) | |
{ | |
// To display the the attachment file name | |
attachment->Save(dataDir + L"MessageEmbedded_out.msg"); | |
System::Console::WriteLine(attachment->get_Name()); | |
} | |
} |
Recuperando la Descripción de Contenido del Adjunto
La API de Aspose.Email proporciona la capacidad de leer la Descripción de Contenido del adjunto desde el encabezado del adjunto. El siguiente fragmento de código muestra cómo recuperar la descripción de contenido del adjunto.
For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C | |
System::SharedPtr<MailMessage> message = MailMessage::Load(dataDir + L"EmailWithAttandEmbedded.eml"); | |
System::String description = message->get_Attachments()->idx_get(0)->get_Headers()->idx_get(L"Content-Description"); | |
System::Console::WriteLine(description); |
Trabajando con Objetos Incrustados
Un objeto incrustado es un objeto que fue creado con una aplicación y encerrado dentro de un documento o archivo creado por otra aplicación. Por ejemplo, una hoja de cálculo de Microsoft Excel puede estar incrustada en un informe de Microsoft Word, o un archivo de video puede estar incrustado en una presentación de Microsoft PowerPoint. Cuando un archivo está incrustado, en lugar de insertarse o pegarse en otro documento, retiene su formato original. El documento incrustado puede ser abierto en la aplicación original y modificado.
Incrustando Objetos en un Correo
La clase LinkedResources se utiliza con la clase MailMessage para incrustar objetos en tus mensajes de correo electrónico. Para agregar un objeto incrustado, sigue estos pasos:
- Crea una instancia de la clase MailMessage.
- Especifica los valores de de, para y asunto en la instancia de MailMessage.
- Crea una instancia de la clase AlternateView.
- Crea una instancia de la clase LinkedResources.
- Carga un objeto incrustado en la instancia de LinkedResources.
- Agrega el objeto incrustado cargado en la instancia de la clase MailMessage.
- Agrega la instancia de AlternateViews a la instancia de la clase MailMessage.
Los fragmentos de código a continuación producen un mensaje de correo electrónico con ambos cuerpos en texto claro y HTML, y una imagen incrustada en el HTML
Imagen incrustada en el correo |
---|
Puedes enviar cualquier número de objetos incrustados. El tamaño del adjunto está limitado por el servidor de correo. Gmail, por ejemplo, no admite tamaños de archivo mayores a 10MB. Los fragmentos de código a continuación muestran cómo incrustar objetos en un correo. |
For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C | |
// The path to the File directory. | |
System::String dataDir = RunExamples::GetDataDir_Email(); | |
System::String dstEmail = dataDir + L"EmbeddedImage.msg"; | |
// Create an instance of the MailMessage class and Set the addresses and Set the content | |
System::SharedPtr<MailMessage> mail = System::MakeObject<MailMessage>(); | |
mail->set_From(System::MakeObject<MailAddress>(L"test001@gmail.com")); | |
mail->get_To()->Add(L"test001@gmail.com"); | |
mail->set_Subject(L"This is an email"); | |
// Create the plain text part It is viewable by those clients that don't support HTML | |
System::SharedPtr<AlternateView> plainView = AlternateView::CreateAlternateViewFromString(L"This is my plain text content", nullptr, L"text/plain"); | |
/* Create the HTML part.To embed images, we need to use the prefix 'cid' in the img src value. | |
The cid value will map to the Content-Id of a Linked resource. Thus <img src='cid:barcode'> will map to a LinkedResource with a ContentId of //'barcode'. */ | |
System::SharedPtr<AlternateView> htmlView = AlternateView::CreateAlternateViewFromString(L"Here is an embedded image.<img src=cid:barcode>", nullptr, L"text/html"); | |
// Create the LinkedResource (embedded image) and Add the LinkedResource to the appropriate view | |
System::SharedPtr<LinkedResource> barcode = System::MakeObject<LinkedResource>(dataDir + L"1.jpg", MediaTypeNames::Image::Jpeg); | |
barcode->set_ContentId(L"barcode"); | |
mail->get_LinkedResources()->Add(barcode); | |
mail->get_AlternateViews()->Add(plainView); | |
mail->get_AlternateViews()->Add(htmlView); | |
mail->Save(dataDir + L"EmbeddedImage_out.msg", SaveOptions::get_DefaultMsgUnicode()); |
Extracción de Objetos Incrustados
Este tema explica cómo extraer objetos incrustados de un archivo de correo electrónico. Un objeto incrustado es un objeto que fue creado con una aplicación y encerrado dentro de un documento o archivo creado por otra aplicación. Por ejemplo, una hoja de cálculo de Microsoft Excel puede estar incrustada en un informe de Microsoft Word, o un archivo de video puede estar incrustado en una presentación de Microsoft PowerPoint. Cuando un archivo está incrustado, en lugar de insertarse o pegarse en otro documento, retiene su formato original. El documento incrustado puede ser abierto en la aplicación original y modificado. Para extraer un objeto incrustado de un mensaje de correo electrónico, sigue estos pasos:
- Crea una instancia de la clase MailMessage.
- Carga un archivo de correo electrónico en la instancia de MailMessage.
- Crea un bucle y crea una instancia de la clase Attachment en él.
- Guarda el adjunto y muéstralo en pantalla.
- Especifica la dirección del remitente y del destinatario en la instancia de MailMessage.
- El fragmento de código a continuación extrae objetos incrustados de un correo.
Objetos incrustados extraídos en el correo |
---|
![]() |
El siguiente fragmento de código muestra cómo extraer objetos incrustados. |
For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C | |
// The path to the File directory. | |
System::String dataDir = RunExamples::GetDataDir_Email(); | |
// Create an instance of MailMessage and load an email file | |
System::SharedPtr<MailMessage> mailMsg = MailMessage::Load(dataDir + L"Message.msg", System::MakeObject<MsgLoadOptions>()); | |
{ | |
auto attachment_enumerator = (mailMsg->get_Attachments())->GetEnumerator(); | |
decltype(attachment_enumerator->get_Current()) attachment; | |
while (attachment_enumerator->MoveNext() && (attachment = attachment_enumerator->get_Current(), true)) | |
{ | |
// To display the the attachment file name | |
attachment->Save(dataDir + L"MessageEmbedded_out.msg"); | |
System::Console::WriteLine(attachment->get_Name()); | |
} | |
} |