Inviare email in Visual C++

31 gennaio 2012

In questo articolo vedremo come scrivere un’applicazione in c++ per l’invio di messaggi email tramite il protocollo SMTP, utilizzando il framework .NET.

In particolare vedremo come utilizzare le classi:

  • MailMessage per rappresentare e comporre un messaggio di posta elettronica
  • SmtpClient per effettuare l’invio dei messaggi

che fanno parte del namespace System::Net::Mail. I messaggi creati verranno spediti tramite il metodo asincrono SendAsync e controlleremo che essi siano stati effettivamente spediti prima di chiudere l’applicazione e rilasciare le risorse allocate.

Iniziamo a costruire la nostra applicazione con Visual C++ (con Visual Studio o Visual C++ Express). Anzitutto creiamo una nuova applicazione CLR, per semplificare, una Applicazione console CLR.

Figura 1. Creare una Applicazione console CLR

Creare una Applicazione console CLR

Fatto questo procediamo subito all’importazione delle librerie di cui avremo bisogno. I Namespace sono:

using namespace System;
using namespace System::Net;
using namespace System::Net::Mail;

Come abbiamo anticipato, istanziando la classe MailMessage possiamo costruire un messaggio che potremo trasmettere successivamente ad un server SMTP. Vediamo subito come specificare mittente, destinatario e contenuto, grazie alle proprietà di MailMessage:

// Specifichiamo il mittente (FROM)
// Creiamo un indirizzo email che includa caratteri UTF8 
        
MailAddress^ from = gcnew MailAddress("paolinopaperino@miaemail.com",
                                      "Paolino " + (wchar_t)0xD8 + " Paperino", System::Text::Encoding::UTF8);

// Impostiamo il destinatario ovvero il TO.
MailAddress^ to = gcnew MailAddress("paperina@tuaemail.com");

// Creiamo il contenuto del messaggio utilizzando la classe MailMessage.
MailMessage^ message = gcnew MailMessage(from, to);
message->Body = "Ciao Mondo - questo è un semplice test per invio email " +
                " da un applicazione scritta in c++. ";

// Includiamo alcuni caratteri non-ASCII nel corpo ed anche nel subject
String^ someArrows = gcnew String(gcnew array<wchar_t>{L'\u2190', L'\u2191', L'\u2192', L'\u2193'});

message->Body += Environment::NewLine + someArrows;
message->BodyEncoding = System::Text::Encoding::UTF8;
message->Subject = "Prova invio email" + someArrows;
message->SubjectEncoding = System::Text::Encoding::UTF8;

Ora vediamo come inviare le nostre email grazie alla classe SmtpClient, usando il protocollo SMTP. Per l’invio della Mail bisogna che venga specificato il nome dell’ SMTP server (per esempio: smtp.yahoo.it).

// Come argomento da linea di commando viene passato il nome dell' SMTP server.
SmtpClient^ client = gcnew SmtpClient(args[1]);

Se vuoi aggiornamenti su Inviare email in Visual C++ inserisci la tua e-mail nel box qui sotto:
C++
 
X
Se vuoi aggiornamenti su Inviare email in Visual C++

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento dei dati per attività di marketing