Trabalhando com Anexos e Objetos Embutidos usando a Biblioteca C++ Email Parser
Gerenciando Anexos de E-mail
Um anexo de e-mail é um arquivo de computador que é enviado juntamente com uma mensagem de e-mail. O arquivo pode ser enviado como uma mensagem separada, bem como parte da mensagem à qual está anexado. A classe Attachment é usada com a classe MailMessage. Todas as mensagens incluem um corpo. Além do corpo, você pode querer enviar arquivos adicionais. Estes são enviados como anexos e são representados como instâncias da classe Attachment. Você pode enviar qualquer número de anexos, mas o tamanho do anexo é limitado pelo servidor de e-mail. O Gmail, por exemplo, não suporta tamanhos de arquivo superiores a 10MB.
Experimente!
Adicione ou remova anexos de e-mail com o gratuito Aspose.Email Editor App.
Adicionando Anexo
Para anexar um anexo a um e-mail, siga estas etapas:
- Crie uma instância da classe MailMessage.
- Crie uma instância da classe Attachment.
- Carregue o anexo na instância Attachment.
- Adicione a instância Attachment na instância da classe MailMessage.
O seguinte trecho de código mostra como adicionar um anexo a um e-mail.
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()); |
Acima, descrevemos como adicionar anexos à sua mensagem de e-mail com Aspose.Email. O que se segue mostra como remover anexos e exibir informações sobre eles na tela.
Removendo um Anexo
Para remover um anexo, siga os passos abaixo:
- Crie uma instância da classe Attachment.
- Carregue o anexo na instância da classe Attachment.
- Adicione o anexo à instância da classe MailMessage.
- Remova os anexos da instância da classe Attachment usando a instância da classe MailMessage.
O seguinte trecho de código mostra como remover um anexo.
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()); | |
} | |
} |
Exibindo o Nome do Arquivo Anexo
Para exibir o nome do arquivo anexo, siga estas etapas:
- Percorra os anexos na mensagem de e-mail e
- Salve cada anexo.
- Exiba o nome de cada anexo na tela.
O seguinte trecho de código mostra como exibir o nome de um arquivo anexo na tela.
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()); | |
} | |
} |
Extraindo Anexos de E-mail
Este tópico explica como extrair um anexo de um arquivo de e-mail. Um anexo de e-mail é um arquivo de computador que é enviado juntamente com uma mensagem de e-mail. O arquivo pode ser enviado como uma mensagem separada, bem como parte da mensagem à qual está anexado. Todas as mensagens de e-mail incluem um corpo. Assim como o corpo, você pode querer enviar arquivos adicionais. Estes são enviados como anexos e são representados como instâncias da classe Attachment. A classe Attachment é usada com a classe MailMessage para trabalhar com anexos. Para extrair anexos de uma mensagem de e-mail, siga estas etapas:
- Crie uma instância da classe MailMessage.
- Carregue um arquivo de e-mail na instância MailMessage.
- Crie uma instância da classe Attachment e use-a em um loop para extrair todos os anexos.
- Salve o anexo e exiba-o na tela.
- Especifique o endereço do remetente e do destinatário na instância MailMessage.
- Os trechos de código extraem anexos de um e-mail.
Anexos extraídos no e-mail |
---|
![]() |
O seguinte trecho de código mostra como extrair anexos de e-mail. |
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 o Content-Description do Anexo
A API Aspose.Email fornece a capacidade de ler o Content-Description do anexo a partir do cabeçalho do anexo. O seguinte trecho de código mostra como recuperar a descrição do conteúdo do anexo.
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); |
Trabalhando com Objetos Embutidos
Um objeto embutido é um objeto que foi criado com um aplicativo e encerrado dentro de um documento ou arquivo criado por outro aplicativo. Por exemplo, uma planilha do Microsoft Excel pode ser embutida em um relatório do Microsoft Word, ou um arquivo de vídeo pode ser embutido em uma apresentação do Microsoft PowerPoint. Quando um arquivo é embutido, em vez de inserido ou colado em outro documento, ele mantém seu formato original. O documento embutido pode ser aberto no aplicativo original e modificado.
Embutindo Objetos em um E-mail
A classe LinkedResources é usada com a classe MailMessage para embutir objetos em suas mensagens de e-mail. Para adicionar um objeto embutido, siga estas etapas:
- Crie uma instância da classe MailMessage.
- Especifique os valores do remetente, destinatário e assunto na instância MailMessage.
- Crie uma instância da classe AlternateView.
- Crie uma instância da classe LinkedResources.
- Carregue um objeto embutido na instância LinkedResources.
- Adicione o objeto embutido carregado na instância da classe MailMessage.
- Adicione a instância de AlternateViews à instância da classe MailMessage.
Os trechos de código abaixo produzem uma mensagem de e-mail com corpos em texto simples e HTML e uma imagem embutida no HTML.
Imagem embutida no e-mail |
---|
Você pode enviar qualquer número de objetos embutidos. O tamanho do anexo é limitado pelo servidor de e-mail. O Gmail, por exemplo, não suporta tamanhos de arquivo superiores a 10MB. Os trechos de código abaixo mostram como embutir objetos em um e-mail. |
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()); |
Extraindo Objetos Embutidos
Este tópico explica como extrair objetos embutidos de um arquivo de e-mail. Um objeto embutido é um objeto que foi criado com um aplicativo e encerrado dentro de um documento ou arquivo criado por outro aplicativo. Por exemplo, uma planilha do Microsoft Excel pode ser embutida em um relatório do Microsoft Word, ou um arquivo de vídeo pode ser embutido em uma apresentação do Microsoft PowerPoint. Quando um arquivo é embutido, em vez de inserido ou colado em outro documento, ele mantém seu formato original. O documento embutido pode ser aberto no aplicativo original e modificado. Para extrair um objeto embutido de uma mensagem de e-mail, siga estas etapas:
- Crie uma instância da classe MailMessage.
- Carregue um arquivo de e-mail na instância MailMessage.
- Crie um loop e crie uma instância da classe Attachment nele.
- Salve o anexo e exiba-o na tela.
- Especifique o endereço do remetente e do destinatário na instância MailMessage.
- O trecho de código abaixo extrai objetos embutidos de um e-mail.
Objetos embutidos extraídos no e-mail |
---|
![]() |
O seguinte trecho de código mostra como extrair objetos embutidos. |
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()); | |
} | |
} |