Inviare Email automaticamente con monotouch

Per un servizio che ho creato, ho avuto la necessità di inviare automaticamente email senza utilizzare MFMessageComposeViewController ma direttamente con smtp e la libreria System.Net. Ho pensato: “Nulla di più facile. copio il codice che ho sempre utilizzato in c# ed è fatta” :

sing System.Net;
using System.Net.Mail;

..

MailMessage mm = new MailMessage();
mm.To.Add(new MailAddress("mail@gmail.com"));
mm.From = new MailAddress("mail2@gmail.com");

mm.Subject = "Customer Signup CSV Export";
mm.Body = "Here are the Customers Signed up";
mm.BodyEncoding = UTF8Encoding.UTF8;
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
NetworkCredential _Credential = new NetworkCredential("nome", "password");

SmtpClient ss = new SmtpClient("smtp.gmail.com");
ss.UseDefaultCredentials = false;
ss.EnableSsl = true;
ss.Credentials = _Credential;
ss.Port = 587;
ss.SendCompleted+= HandleSsSendCompleted;
ss.Send(mm);

Tutto ok per qualsiasi provider di posta ma quando inserivo i dati di configurazione di gmail mi dava un’errore di autenticazione.
Girando su google ho scoperto che in Mono bisogna inserire anche la gestione di certificati. Il codice per Gmail è il seguente:

sing System.Net;
using System.Net.Mail;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;

..

MailMessage mm = new MailMessage();
mm.To.Add(new MailAddress("mail@gmail.com"));
mm.From = new MailAddress("mail2@gmail.com");

mm.Subject = "Customer Signup CSV Export";
mm.Body = "Here are the Customers Signed up";
mm.BodyEncoding = UTF8Encoding.UTF8;
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
NetworkCredential _Credential = new NetworkCredential("nome", "password");

SmtpClient ss = new SmtpClient("smtp.gmail.com");
ss.UseDefaultCredentials = false;
ss.EnableSsl = true;
ss.Credentials = _Credential;
ss.Port = 587;
ss.SendCompleted+= HandleSsSendCompleted;
ServicePointManager.ServerCertificateValidationCallback = 
delegate(object s, X509Certificate certificate, X509Chain chant, SslPolicyErrors error)
{    
   return true;    
};

ss.Send(mm);

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...