Enviar e-mails do Outlook em C++

No artigo anterior, você viu como criar emails do MS Outlook, incluindo MSG, EML e EMLX programaticamente usando C++. Nesta postagem, você aprenderá como enviar e-mails do Outlook a partir de aplicativos C++. Os e-mails podem ser criados em tempo de execução ou carregados de arquivos de e-mail já salvos, como .msg, .emlx ou etc.

Envie e-mails com a biblioteca de e-mail C++ - Download gratuito

Da mesma forma que o post anterior, usaremos Aspose.Email for C++ para enviar os e-mails do Outlook. Você pode baixar os arquivos da biblioteca da seção Downloads ou instalá-los usando NuGet.

Enviar e-mails do Outlook usando C++

A seguir estão as etapas para enviar um email do Outlook com cliente SMTP usando Aspose.Email para C++.

  • Crie um e-mail do Outlook ou carregue-o de um arquivo usando a classe MailMessage.
  • Crie um objeto de SmtpClient.
  • Defina o host, o nome de usuário, a senha e o número da porta.
  • Defina as opções de segurança.
  • Envie e-mail usando o método SmtpClient->Send().

O exemplo de código a seguir mostra como enviar um email do Outlook usando C++.

// Crie uma nova instância da classe MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Definir assunto da mensagem, corpo HTML e informações do remetente
message->set_Subject(u"New message created by Aspose.Email for .NET");
message->set_From(System::MakeObject<MailAddress>(L"from@domain.com", L"Sender Name", false));
message->set_Body(System::String(u"<b>This line is in bold.</b> <br/> <br/>") + u"<font color=blue>This line is in blue color</font>");
message->set_BodyEncoding(System::Text::Encoding::get_ASCII());
// Adicionar destinatários para e adicionar destinatários CC
message->get_To()->Add(System::MakeObject<MailAddress>(L"to1@domain.com", L"Recipient 1", false));
message->get_To()->Add(System::MakeObject<MailAddress>(L"to2@domain.com", L"Recipient 2", false));
message->get_CC()->Add(System::MakeObject<MailAddress>(L"cc1@domain.com", L"Recipient 3", false));

// Especifique seu servidor host de e-mail, nome de usuário, senha, número da porta e opção de segurança
client->set_Host(u"mail.server.com");
client->set_Username(u"username");
client->set_Password(u"password");
client->set_Port(587);
client->set_SecurityOptions(Aspose::Email::Clients::SecurityOptions::SSLExplicit);

try
{
	// Envie esta mensagem
	client->Send(message);
}
catch (System::Exception& ex)
{

}

C++ Enviar e-mails do Outlook com exibição alternativa

Você também pode especificar uma visualização alternativa do e-mail para criar uma cópia da mensagem em um formato diferente. Por exemplo, se sua mensagem estiver no formato HTML, você poderá criar uma visualização alternativa com um texto simples. Para criar uma visualização alternativa, você pode usar o método MailMessage->getAlternateViews()->Add(AlternateView::CreateAlternateViewFromString(u"texto")).

O exemplo de código a seguir mostra como enviar um email com uma exibição alternativa usando C++.

// Crie uma instância da classe MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();

// Campo De e Para
message->set_From(u"sender@sender.com");
message->get_To()->Add(u"receiver@receiver.com");

System::SharedPtr<AlternateView> alternate;

// Crie uma instância de AlternateView para visualizar uma mensagem de email usando o conteúdo especificado na string
alternate = AlternateView::CreateAlternateViewFromString(u"This is the alternate Text");

// Adicionar texto alternativo
message->get_AlternateViews()->Add(alternate);

// Crie uma instância da classe SmtpClient
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Especifique seu servidor host de correio, nome de usuário, senha de correio e número da porta
client->set_Host(u"smtp.server.com");
client->set_Username(u"Username");
client->set_Password(u"Password");
client->set_Port(25);
try
{
	// Cliente->Enviar enviará esta mensagem
	client->Send(message);
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

Enviar e-mails em massa usando C++

Pode ser o caso de você precisar enviar uma grande quantidade de e-mails de cada vez. Para esses casos, Aspose.Email para C++ fornece a classe MailMessageCollection para encapsular várias mensagens de email. Veja a seguir as etapas para enviar a maioria dos e-mails.

  • Crie ou carregue mensagens de e-mail usando a classe MailMessage.
  • Crie um objeto da classe MailMessageCollection.
  • Adicione mensagens de email à coleção usando o método MailMessageCollection->add().
  • Crie um objeto da classe SmtpClient.
  • Envie emails em massa usando o método SmtpClient->Send(MailMessageCollection).

O exemplo de código a seguir mostra como enviar a maioria dos emails usando C++.

// Crie SmtpClient como cliente e especifique servidor, porta, nome de usuário e senha
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>(u"mail.server.com", 25, u"Username", u"Password");

// Crie instâncias da classe MailMessage e especifique para, de, assunto e mensagem
System::SharedPtr<MailMessage> message1 = System::MakeObject<MailMessage>(u"msg1@from.com", u"msg1@to.com", u"Subject1", u"message1, how are you?");
System::SharedPtr<MailMessage> message2 = System::MakeObject<MailMessage>(u"msg1@from.com", u"msg2@to.com", u"Subject2", u"message2, how are you?");
System::SharedPtr<MailMessage> message3 = System::MakeObject<MailMessage>(u"msg1@from.com", u"msg3@to.com", u"Subject3", u"message3, how are you?");

// Crie uma instância da classe MailMessageCollection
System::SharedPtr<MailMessageCollection> manyMsg = System::MakeObject<MailMessageCollection>();
manyMsg->Add(message1);
manyMsg->Add(message2);
manyMsg->Add(message3);

// Envio em massa
try
{
	// Enviar mensagens
	client->Send(manyMsg); 
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

C++ Enviar e-mails como TNEF

O MS Outlook usa Formato de Encapsulamento Neutro de Transporte (TNEF) para enviar os e-mails com corpos RTF. Nesse caso, a formatação é extraída do e-mail e codificada como TNEF. Na extremidade de recebimento, se o cliente oferecer suporte a TNEF, ele monta o texto simples e o anexo TNEF para criar o email RTF. Caso contrário, o e-mail será exibido como texto simples. Para enviar emails como TNEF, você pode usar o método SmtpClient->setUseTnef(bool).

O exemplo de código a seguir mostra como enviar um email do Outlook como TNEF usando C++.

try
{
// Caminho do arquivo de e-mail
System::String emlFileName = u"Message.eml";
// Um e-mail TNEF

// Carregar de eml
System::SharedPtr<MailMessage> eml1 = MailMessage::Load(emlFileName, System::MakeObject<EmlLoadOptions>());
eml1->set_From(u"somename@gmail.com");
eml1->get_To()->Clear();
eml1->get_To()->Add(System::MakeObject<MailAddress>(u"first.last@test.com"));
eml1->set_Subject(u"With PreserveTnef flag during loading");
eml1->set_Date(System::DateTime::get_Now());
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>(u"smtp.gmail.com", 587, u"somename", u"password");
client->set_SecurityOptions(Aspose::Email::Clients::SecurityOptions::Auto);
client->set_UseTnef(true);
// Use este sinalizador para enviar como TNEF
client->Send(eml1); 
}
catch (System::Exception& ex)
{
// pegar exceção
}

Conclusão

Neste post, você viu como enviar e-mails do Outlook usando C++. Além disso, você sabe como enviar e-mails em massa, enviar e-mails com uma visualização alternativa ou enviar e-mails como TNEF em aplicativos C++. Você pode explorar mais sobre a biblioteca de e-mail C++ da Aspose usando a documentação.

Veja também