Invia e-mail di Outlook in C++

Nell’articolo precedente, hai visto come creare e-mail di MS Outlook inclusi MSG, EML e EMLX a livello di codice usando C++. In questo post imparerai come inviare e-mail di Outlook dall’interno delle applicazioni C++. Le e-mail possono essere create sul runtime o caricate da file e-mail già salvati come .msg, .emlx o ecc.

Invia e-mail con Libreria e-mail C++ - Download gratuito

Allo stesso modo del post precedente, utilizzeremo Aspose.Email per C++ per inviare le e-mail di Outlook. È possibile scaricare i file della libreria dalla sezione Download o installarlo utilizzando NuGet.

Invia e-mail di Outlook utilizzando C++

Di seguito sono riportati i passaggi per inviare un’e-mail di Outlook con il client SMTP utilizzando Aspose.Email per C++.

  • Crea un’e-mail di Outlook o caricala da un file utilizzando la classe MailMessage.
  • Crea un oggetto di SmtpClient.
  • Imposta host, nome utente, password e numero di porta.
  • Imposta le opzioni di sicurezza.
  • Invia e-mail utilizzando il metodo SmtpClient->Send().

L’esempio di codice seguente mostra come inviare un messaggio di posta elettronica di Outlook utilizzando C++.

// Crea una nuova istanza della classe MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Imposta l'oggetto del messaggio, il corpo HTML e le informazioni sul mittente
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());
// Aggiungi destinatari TO e Aggiungi destinatari 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));

// Specificare il server dell'host di posta, il nome utente, la password, il numero di porta e l'opzione di sicurezza
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
{
	// Invia questo messaggio
	client->Send(message);
}
catch (System::Exception& ex)
{

}

C++ Invia e-mail di Outlook con visualizzazione alternativa

Puoi anche specificare una visualizzazione alternativa dell’e-mail per creare una copia del messaggio in un formato diverso. Ad esempio, se il tuo messaggio è in formato HTML, puoi creare una vista alternativa con un testo normale. Per creare una vista alternativa, puoi usare il metodo MailMessage->getAlternateViews()->Add(AlternateView::CreateAlternateViewFromString(u"text")).

L’esempio di codice seguente mostra come inviare un messaggio di posta elettronica con una visualizzazione alternativa usando C++.

// Crea un'istanza della classe MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();

// Da e A campo
message->set_From(u"sender@sender.com");
message->get_To()->Add(u"receiver@receiver.com");

System::SharedPtr<AlternateView> alternate;

// Crea un'istanza di AlternateView per visualizzare un messaggio di posta elettronica utilizzando il contenuto specificato nella stringa
alternate = AlternateView::CreateAlternateViewFromString(u"This is the alternate Text");

// Aggiungi testo alternativo
message->get_AlternateViews()->Add(alternate);

// Creare un'istanza della classe SmtpClient
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Specificare il server dell'host di posta, il nome utente, la password di posta e il numero di porta
client->set_Host(u"smtp.server.com");
client->set_Username(u"Username");
client->set_Password(u"Password");
client->set_Port(25);
try
{
	// Cliente->Invia invierà questo messaggio
	client->Send(message);
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

Invia e-mail in blocco utilizzando C++

Potrebbe verificarsi il caso in cui è necessario inviare una grande quantità di e-mail alla volta. Per tali casi, Aspose.Email per C++ fornisce la classe MailMessageCollection per incapsulare più messaggi di posta elettronica. Di seguito sono riportati i passaggi per inviare la maggior parte delle e-mail.

  • Crea o carica messaggi e-mail utilizzando la classe MailMessage.
  • Crea un oggetto della classe MailMessageCollection.
  • Aggiungi messaggi di posta elettronica alla raccolta utilizzando il metodo MailMessageCollection->add().
  • Crea un oggetto della classe SmtpClient.
  • Invia email in blocco utilizzando il metodo SmtpClient->Send(MailMessageCollection).

L’esempio di codice seguente mostra come inviare la maggior parte dei messaggi di posta elettronica usando C++.

// Crea SmtpClient come client e specifica server, porta, nome utente e password
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>(u"mail.server.com", 25, u"Username", u"Password");

// Crea istanze della classe MailMessage e specifica A, Da, Oggetto e Messaggio
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?");

// Crea un'istanza della classe MailMessageCollection
System::SharedPtr<MailMessageCollection> manyMsg = System::MakeObject<MailMessageCollection>();
manyMsg->Add(message1);
manyMsg->Add(message2);
manyMsg->Add(message3);

// Invio in blocco
try
{
	// Manda messaggi
	client->Send(manyMsg); 
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

C++ Invia e-mail come TNEF

MS Outlook utilizza Transport Neutral Encapsulation Format (TNEF) per inviare le e-mail con corpi RTF. In questo caso, la formattazione viene estratta dall’e-mail e viene codificata come TNEF. All’estremità ricevente, se il client supporta TNEF, assembla il testo normale e l’allegato TNEF per creare l’e-mail RTF. In caso contrario, l’e-mail viene visualizzata come testo normale. Per inviare e-mail come TNEF, puoi utilizzare il metodo SmtpClient->setUseTnef(bool).

L’esempio di codice seguente mostra come inviare un messaggio di posta elettronica di Outlook come TNEF utilizzando C++.

try
{
// Percorso del file di posta elettronica
System::String emlFileName = u"Message.eml";
// Un'e-mail TNEF

// Carica da 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);
// Usa questo flag per inviare come TNEF
client->Send(eml1); 
}
catch (System::Exception& ex)
{
// cattura l'eccezione
}

Conclusione

In questo post, hai visto come inviare e-mail di Outlook utilizzando C++. Inoltre, hai imparato come inviare e-mail in blocco, inviare e-mail con una vista alternativa o inviare e-mail come TNEF all’interno delle applicazioni C++. Puoi esplorare di più sulla libreria di posta elettronica C++ di Aspose usando la documentazione.

Guarda anche