Criando e Salvando arquivos MSG do Outlook usando a C++ Email API

Criando e Salvando arquivos MSG

Aspose.Email suporta a criação de arquivos de mensagem do Outlook (MSG). Este artigo explica como:

  • Criar mensagens MSG.
  • Criar mensagens MSG com anexos.
  • Criar uma mensagem MSG com corpo RTF.
  • Salvar uma mensagem como rascunho.
  • Trabalhar com compressão de corpo.

Criando e Salvando Mensagens do Outlook

A classe MailMessage possui o método Save() que pode salvar arquivos MSG do Outlook no disco ou em um stream. Os trechos de código abaixo criam uma instância da classe MailMessage, configuram propriedades como de, para, assunto e corpo. O método Save() aceita o nome do arquivo como argumento. Além disso, as Mensagens do Outlook podem ser criadas com um corpo RTF comprimido usando as MapiConversionOptions. Para configurar, crie uma nova aplicação Windows e adicione uma referência à dll Aspose.Email no projeto.

  1. Crie uma nova instância da classe MailMessage e configure as propriedades From, To, Subject e Body.
  2. Chame o método FromMailMessage da classe MailMessage que aceita um objeto do tipo MailMessage. O método FromMailMessage() converte o MailMessage em um MailMessage (MSG).
  3. Chame o método MapiMessage.Save() para salvar o arquivo MSG.

Escreva o seguinte código no evento de clique do controle de botão da aplicação Windows.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Create an instance of the MailMessage class
System::SharedPtr<MailMessage> mailMsg = System::MakeObject<MailMessage>();
// Set from, to, subject and body properties
mailMsg->set_From(L"sender@domain.com");
mailMsg->set_To(L"receiver@domain.com");
mailMsg->set_Subject(L"This is test message");
mailMsg->set_Body(L"This is test body");
// Create an instance of the MapiMessage class and pass MailMessage as argument
System::SharedPtr<MapiMessage> outlookMsg = MapiMessage::FromMailMessage(mailMsg);
// Save the message (MSG) file
System::String strMsgFile = L"CreatingAndSavingOutlookMessages_out.msg";
outlookMsg->Save(dataDir + strMsgFile);

Criando arquivos MSG com corpo RTF

Você também pode criar arquivos de Mensagem do Outlook (MSG) com corpos de texto rico (RTF) com Aspose.Email. O corpo RTF suporta formatação de texto. Crie um definindo a propriedade MailMessage.HtmlBody. Quando você converte uma instância de MailMessage em uma instância de MailMessage, o corpo HTML é convertido em RTF. Assim, a formatação do corpo do email é preservada.

O exemplo a seguir cria um arquivo MSG com um corpo RTF. Há um cabeçalho, formatação em negrito e sublinhado aplicada no corpo HTML. Essa formatação é mantida quando o HTML é convertido em RTF.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Create an instance of the MailMessage class
System::SharedPtr<MailMessage> mailMsg = System::MakeObject<MailMessage>();
// Set from, to, subject and body properties
mailMsg->set_From(L"from@domain.com");
mailMsg->set_To(L"to@domain.com");
mailMsg->set_Subject(L"subject");
mailMsg->set_HtmlBody(L"<h3>rtf example</h3><p>creating an <b><u>outlook message (msg)</u></b> file using Aspose.Email.</p>");
System::SharedPtr<MapiMessage> outlookMsg = MapiMessage::FromMailMessage(mailMsg);
outlookMsg->Save(dataDir + L"CreatingMSGFilesWithRTFBody_out.msg");

Salvando Mensagem em Status de Rascunho

Emails são salvos como rascunhos quando alguém começou a editá-los, mas deseja retorná-los para completá-los mais tarde. Aspose.Email suporta salvar mensagem de email em status de rascunho definindo uma flag de mensagem. Abaixo está o código de exemplo para salvar uma mensagem de email do Outlook (MSG) como um rascunho.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Change properties of an existing MSG file
System::String strExistingMsg = L"message.msg";
// Load the existing file in MailMessage and Change the properties
System::SharedPtr<MailMessage> msg = MailMessage::Load(dataDir + strExistingMsg, System::MakeObject<MsgLoadOptions>());
System::setter_add_wrap(msg.get(), &MailMessage::get_Subject, &MailMessage::set_Subject, L"NEW SUBJECT (updated by Aspose.Email)");
System::setter_add_wrap(msg.get(), &MailMessage::get_HtmlBody, &MailMessage::set_HtmlBody, L"NEW BODY (udpated by Aspose.Email)");
// Create an instance of type MapiMessage from MailMessage, Set message flag to un-sent (draft status) and Save it
System::SharedPtr<MapiMessage> mapiMsg = MapiMessage::FromMailMessage(msg);
mapiMsg->SetMessageFlags(Aspose::Email::Outlook::MapiMessageFlags::MSGFLAG_UNSENT);
mapiMsg->Save(dataDir + L"SavingMessageInDraftStatus_out.msg");

Implicações da Compressão do Corpo

O método de compressão de corpo RTF pode ser usado para gerar um MSG de tamanho menor. No entanto, isso resulta em velocidade mais lenta. Para criar mensagens com velocidade melhorada, defina a flag como falsa. Essa flag, por sua vez, tem efeito sobre os PSTs criados: arquivos MSG menores resultam em PST menores, e arquivos MSG grandes resultam em criação de PST mais lenta.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::SharedPtr<MailMessage> message = MailMessage::Load(fileName);
System::SharedPtr<MapiConversionOptions> options = System::MakeObject<MapiConversionOptions>();
options->set_UseBodyCompression(true);
System::SharedPtr<MapiMessage> ae_mapi = MapiMessage::FromMailMessage(message, options);