Se il vostro obiettivo è inviare email utilizzando .Net, il problema è presto risolto. Prima però è necessaria una premessa: fino alla versione 3.5 del Framework erano presenti due namespace: System.Web.Mail e System.Net.Mail. At Microsoft hanno deciso di mettere un po’ d’ordine (?) eliminando il primo i cui oggetti, dalla versione 4.0 vengono etichettati come obsoleti, ovviamente è ancora possibile utilizzarli ma ve lo sconsiglio.

Cosa ci serve? Prima di tutto un Mittente, qualcuno che invii la posta per conto nostro, utilizziamo come esempio un account GMail, dobbiamo essere in possesso di informazioni quali: hostname del server SMTP, porta di connessione, username e password (ah dimenticavo, è importante sapere se il server di posta utilizza SSL).

Il passo successivo è configurare il nostro web.config in modo tale da poter inviare messaggi (ritengo questa modalità configurazione una chicca davvero unica, pensiamo al semplice passaggio da ambienti di test a quelli di esercizio, indolore se consiste nella semplice modifica di variabili di configurazione!):

<configuration>
  ...
  <system.net>
    <mailsettings>
      <smtp from="accountEmail">
        <network 
		password="accountPassword" 
		enablessl="true" 
		username="accountEmail" 
		port="25" 
		host="smtp.gmail.com" />
      </smtp>
    </mailsettings>
  </system.net>
  ...
</configuration>

Se siamo sicuri della configurazione (non si sa mai, mi capita spesso di sbagliare password o di scrivere STMP invece che SMTP), possiamo procedere con la scrittura del codice necessario all’invio di una email di prova:

MailMessage message = new MailMessage();
message.To.Add("[email protected]");
message.Object = "Prova";
message.Body = "Questo è un messaggio di prova.";

SmtpClient client = new SmtpClient();
client.Send(message);

client.Dispose();
client = null;

message.Dispose();
message = null;

[ad#ad-lungo]

Quando scriviamo SmtpClient client = new SmtpClient() automaticamente, se non espressamente specificato nel costruttore (o tramite esplicita dichiarazione nel web.config in cui possiamo specificare defaultCredentials=”true”), l’oggetto acquisisce direttamente la configurazione presente nel web.config. 

Ricordo che con System.Web.Mail impostavo manualmente (da codice) queste informazioni ed il tutto era abbastanza frustrante, successivamente ho optato per parametrizzare tramite web.config con una serie di key/value nella sezione appSettings ma non mi sembrava ancora molto convincente, alla fine la soluzione migliore è stata System.Net.Mail.