Enviar correos electrónicos de Outlook en C++

En el artículo anterior, vio cómo crear correos electrónicos de MS Outlook que incluyen MSG, EML y EMLX mediante programación usando C++. En esta publicación, aprenderá cómo enviar correos electrónicos de Outlook desde aplicaciones C++. Los correos electrónicos pueden crearse en el tiempo de ejecución o cargarse desde archivos de correo electrónico ya guardados, como .msg, .emlx, etc.

Enviar correos electrónicos con la biblioteca de correo electrónico de C++ - Descarga gratuita

Del mismo modo que la publicación anterior, usaremos Aspose.Email for C++ para enviar los correos electrónicos de Outlook. Puede descargar los archivos de la biblioteca desde la sección Descargas o instalarlos usando NuGet.

Enviar correos electrónicos de Outlook usando C++

Los siguientes son los pasos para enviar un correo electrónico de Outlook con un cliente SMTP usando Aspose.Email for C++.

  • Cree un correo electrónico de Outlook o cárguelo desde un archivo usando la clase MailMessage.
  • Cree un objeto de SmtpClient.
  • Configure el host, el nombre de usuario, la contraseña y el número de puerto.
  • Establecer opciones de seguridad.
  • Envíe un correo electrónico utilizando el método SmtpClient->Send().

El siguiente ejemplo de código muestra cómo enviar un correo electrónico de Outlook mediante C++.

// Crear una nueva instancia de la clase MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Establecer asunto del mensaje, cuerpo HTML e información del remitente
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());
// Agregar destinatarios TO y Agregar destinatarios 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 su servidor host de correo, nombre de usuario, contraseña, número de puerto y opción de seguridad
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
{
	// enviar este mensaje
	client->Send(message);
}
catch (System::Exception& ex)
{

}

C++ Enviar correos electrónicos de Outlook con vista alternativa

También puede especificar una vista alternativa del correo electrónico para crear una copia del mensaje en un formato diferente. Por ejemplo, si su mensaje está en formato HTML, puede crear una vista alternativa con texto sin formato. Para crear una vista alternativa, puede usar el método MailMessage->getAlternateViews()->Add(AlternateView::CreateAlternateViewFromString(u"text")).

El siguiente ejemplo de código muestra cómo enviar un correo electrónico con una vista alternativa mediante C++.

// Crear una instancia de la clase MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();

// Campo Desde y Hasta
message->set_From(u"sender@sender.com");
message->get_To()->Add(u"receiver@receiver.com");

System::SharedPtr<AlternateView> alternate;

// Cree una instancia de AlternateView para ver un mensaje de correo electrónico utilizando el contenido especificado en la cadena
alternate = AlternateView::CreateAlternateViewFromString(u"This is the alternate Text");

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

// Crear una instancia de la clase SmtpClient
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Especifique su servidor host de correo, nombre de usuario, contraseña de correo y número de puerto
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á este mensaje
	client->Send(message);
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

Enviar correos electrónicos masivos usando C++

Puede darse el caso de que necesite enviar una gran cantidad de correos electrónicos a la vez. Para tales casos, Aspose.Email for C++ proporciona la clase MailMessageCollection para encapsular varios mensajes de correo electrónico. Los siguientes son pasos para enviar la mayor parte de los correos electrónicos.

  • Cree o cargue mensajes de correo electrónico utilizando la clase MailMessage.
  • Cree un objeto de la clase MailMessageCollection.
  • Agregue mensajes de correo electrónico a la colección utilizando el método MailMessageCollection->add().
  • Cree un objeto de la clase SmtpClient.
  • Envíe correos electrónicos masivos utilizando el método SmtpClient->Send(MailMessageCollection).

El siguiente ejemplo de código muestra cómo enviar la mayor parte de los correos electrónicos mediante C++.

// Cree SmtpClient como cliente y especifique el servidor, el puerto, el nombre de usuario y la contraseña
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>(u"mail.server.com", 25, u"Username", u"Password");

// Cree instancias de la clase MailMessage y especifique Para, De, Asunto y Mensaje
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?");

// Crear una instancia de la clase MailMessageCollection
System::SharedPtr<MailMessageCollection> manyMsg = System::MakeObject<MailMessageCollection>();
manyMsg->Add(message1);
manyMsg->Add(message2);
manyMsg->Add(message3);

// Envío masivo
try
{
	// Enviar mensajes
	client->Send(manyMsg); 
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

C++ Enviar correos electrónicos como TNEF

MS Outlook utiliza Formato de encapsulación neutral para el transporte (TNEF) para enviar correos electrónicos con cuerpos RTF. En este caso, el formato se extrae del correo electrónico y se codifica como TNEF. En el extremo receptor, si el cliente admite TNEF, ensambla el texto sin formato y el archivo adjunto TNEF para crear el correo electrónico RTF. De lo contrario, el correo electrónico se muestra como texto sin formato. Para enviar correos electrónicos como TNEF, puede usar el método SmtpClient->setUseTnef(bool).

El siguiente ejemplo de código muestra cómo enviar un correo electrónico de Outlook como TNEF usando C++.

try
{
// Ruta del archivo de correo electrónico
System::String emlFileName = u"Message.eml";
// Un correo electrónico de TNEF

// Cargar desde 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 esta bandera para enviar como TNEF
client->Send(eml1); 
}
catch (System::Exception& ex)
{
// excepción de captura
}

Conclusión

En esta publicación, ha visto cómo enviar correos electrónicos de Outlook usando C ++. Además, sabe cómo enviar correos electrónicos masivos, enviar correos electrónicos con una vista alternativa o enviar correos electrónicos como TNEF dentro de las aplicaciones de C++. Puede explorar más sobre la biblioteca de correo electrónico C++ de Aspose utilizando la documentación.

Ver también