Envoyer des e-mails Outlook en C++

Dans l’article précédent, vous avez vu comment créer des e-mails MS Outlook, notamment MSG, EML et EMLX par programmation à l’aide de C++. Dans cet article, vous apprendrez à envoyer des e-mails Outlook à partir d’applications C++. Les e-mails peuvent être créés lors de l’exécution ou chargés à partir de fichiers d’e-mails déjà enregistrés tels que .msg, .emlx, etc.

Envoyer des e-mails avec la bibliothèque de messagerie C++ - Téléchargement gratuit

De même que le post précédent, nous utiliserons Aspose.Email for C++ pour envoyer les e-mails Outlook. Vous pouvez télécharger les fichiers de la bibliothèque à partir de la section Téléchargements ou l’installer à l’aide de NuGet.

Envoyer des e-mails Outlook à l’aide de C++

Voici les étapes pour envoyer un e-mail Outlook avec un client SMTP en utilisant Aspose.Email for C++.

  • Créez un e-mail Outlook ou chargez-le à partir d’un fichier à l’aide de la classe MailMessage.
  • Créez un objet de SmtpClient.
  • Définissez l’hôte, le nom d’utilisateur, le mot de passe et le numéro de port.
  • Définissez les options de sécurité.
  • Envoyez un e-mail à l’aide de la méthode SmtpClient->Send().

L’exemple de code suivant montre comment envoyer un e-mail Outlook à l’aide de C++.

// Créer une nouvelle instance de la classe MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Définir l'objet du message, le corps Html et les informations sur l'expéditeur
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());
// Ajouter des destinataires TO et Ajouter des destinataires 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));

// Spécifiez votre serveur hôte de messagerie, nom d'utilisateur, mot de passe, numéro de port et option de sécurité
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
{
	// Envoyez ce message
	client->Send(message);
}
catch (System::Exception& ex)
{

}

C++ Envoyer des e-mails Outlook avec une vue alternative

Vous pouvez également spécifier une autre vue de l’e-mail pour créer une copie du message dans un format différent. Par exemple, si votre message est au format HTML, vous pouvez créer une vue alternative avec un texte brut. Afin de créer une vue alternative, vous pouvez utiliser la méthode MailMessage->getAlternateViews()->Add(AlternateView::CreateAlternateViewFromString(u"text")).

L’exemple de code suivant montre comment envoyer un e-mail avec une autre vue à l’aide de C++.

// Créer une instance de la classe MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();

// Champ De et À
message->set_From(u"sender@sender.com");
message->get_To()->Add(u"receiver@receiver.com");

System::SharedPtr<AlternateView> alternate;

// Créez une instance de AlternateView pour afficher un message électronique en utilisant le contenu spécifié dans la chaîne
alternate = AlternateView::CreateAlternateViewFromString(u"This is the alternate Text");

// Ajouter un texte alternatif
message->get_AlternateViews()->Add(alternate);

// Créer une instance de la classe SmtpClient
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Spécifiez votre serveur hôte de messagerie, votre nom d'utilisateur, votre mot de passe de messagerie et le numéro de port
client->set_Host(u"smtp.server.com");
client->set_Username(u"Username");
client->set_Password(u"Password");
client->set_Port(25);
try
{
	// Client->Envoyer enverra ce message
	client->Send(message);
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

Envoyer des e-mails en masse à l’aide de C++

Il peut arriver que vous ayez besoin d’envoyer un grand nombre d’e-mails à la fois. Dans de tels cas, Aspose.Email for C++ fournit la classe MailMessageCollection pour encapsuler plusieurs e-mails. Voici les étapes à suivre pour envoyer la majeure partie des e-mails.

  • Créez ou chargez des e-mails à l’aide de la classe MailMessage.
  • Créez un objet de la classe MailMessageCollection.
  • Ajoutez des e-mails à la collection à l’aide de la méthode MailMessageCollection->add().
  • Créez un objet de la classe SmtpClient.
  • Envoyez des e-mails en masse à l’aide de la méthode SmtpClient->Send(MailMessageCollection).

L’exemple de code suivant montre comment envoyer la majeure partie des e-mails à l’aide de C++.

// Créez SmtpClient en tant que client et spécifiez le serveur, le port, le nom d'utilisateur et le mot de passe
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>(u"mail.server.com", 25, u"Username", u"Password");

// Créez des instances de la classe MailMessage et spécifiez To, From, Subject et Message
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?");

// Créer une instance de la classe MailMessageCollection
System::SharedPtr<MailMessageCollection> manyMsg = System::MakeObject<MailMessageCollection>();
manyMsg->Add(message1);
manyMsg->Add(message2);
manyMsg->Add(message3);

// Envoi groupé
try
{
	// Envoyer des messages
	client->Send(manyMsg); 
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

C++ Envoyer des e-mails au format TNEF

MS Outlook utilise Transport Neutral Encapsulation Format (TNEF) pour envoyer les e-mails ayant des corps RTF. Dans ce cas, la mise en forme est extraite de l’email et elle est encodée en TNEF. À la réception, si le client prend en charge TNEF, il assemble le texte brut et la pièce jointe TNEF pour créer l’e-mail RTF. Sinon, l’e-mail s’affiche en texte brut. Pour envoyer des e-mails au format TNEF, vous pouvez utiliser la méthode SmtpClient->setUseTnef(bool).

L’exemple de code suivant montre comment envoyer un e-mail Outlook au format TNEF à l’aide de C++.

try
{
// Chemin d'accès au fichier d'e-mail
System::String emlFileName = u"Message.eml";
// Un e-mail TNEF

// Charger depuis 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);
// Utilisez cet indicateur pour envoyer en tant que TNEF
client->Send(eml1); 
}
catch (System::Exception& ex)
{
// intercepter les exceptions
}

Conclusion

Dans cet article, vous avez vu comment envoyer des e-mails Outlook à l’aide de C++. De plus, vous avez appris à envoyer des e-mails en masse, à envoyer des e-mails avec une autre vue ou à envoyer des e-mails au format TNEF dans les applications C++. Vous pouvez en savoir plus sur la bibliothèque de messagerie C++ d’Aspose à l’aide de la documentation.

Voir également