Inviare email tramite un SMTP con certificato self-signed

by Andrea Dottor 05 September 2012 23:14

Può capitare (in fase di sviluppo) di dover inviare delle mail ad un server SMTP che ha un certificato self-signed.
Se provate ad inviare una mail da codice vi ritroverete con una bella eccezzione a causa del fallimento della validazione del certificato.

Un possibile work-around è quello di forzare il check della validità dei certificati in modo da far ritornare sempre true.
Il codice necessario è il seguente:

ServicePointManager.ServerCertificateValidationCallback =
                                (sender, certificate, chain, sslPolicyErrors) => true;

NOTE: il codice in questione è valido ogni qualvolta vi troviate a dover bypassare degli errori dovuti ai certificati.
Per ovvi motivi di sicurezza, siate ben consci di utilizzare questo codice solamente durante le fasi di sviluppo, altrimenti tanto varrebbe evitare l’uso del certificato.

Ed ecco il codice completo da utilizzare, compreso di invio della mail

ServicePointManager.ServerCertificateValidationCallback =
                                (sender, certificate, chain, sslPolicyErrors) => true;

MailMessage mail = new MailMessage();
mail.To.Add(new MailAddress("mail del destinatario"));
mail.Subject = "Oggetto";
mail.Body = "Corpo della mail";
mail.From = new MailAddress("mail del mittente");

SmtpClient smtp = new SmtpClient("smtp.miaazienda.it");
smtp.Credentials = new NetworkCredential("user", "password", "dominio");
smtp.EnableSsl = true;

smtp.Send(mail);

Tags: ,

ASP .NET | .NET

Comments are closed