2015-07-05 15 views
9

Sto provando a connettermi al mio account Gmail tramite SmtpClient ma sembra non funzionare come dovrebbe. Specifico la porta 465, abilita SSL e definisco tutto, ma ci vogliono circa 2 minuti e poi mostra solo alcuni errori che il messaggio non è stato inviato.Utilizzo di SmtpClient per inviare un'email da Gmail

Cosa sto facendo di sbagliato qui?

try 
{ 
    MailMessage msg = new MailMessage(); 
    msg.From = new MailAddress("[email protected]); 
    msg.To.Add(new MailAddress("[email protected])); 
    msg.Subject = "This is the subject"; 
    msg.Body = "This is the body"; 
    SmtpClient sc = new SmtpClient("smtp.gmail.com", 465); 
    sc.EnableSsl = true; 
    sc.UseDefaultCredentials = false; 
    sc.Credentials = new NetworkCredential("[email protected]", "pass"); 
    sc.DeliveryMethod = SmtpDeliveryMethod.Network; 
    sc.Send(msg); 
    erroremail.Text = "Email has been sent successfully."; 
} 
catch (Exception ex) 
{ 
    erroremail.Text = "ERROR: " + ex.Message; 
} 
+0

ho fatto, e poi si dice 'ERRORE: il server SMTP richiede un sicuro connessione o il client non è stato autenticato. – Aradmey

+0

OK, non si trattava di un problema di codice ma erano le impostazioni di Gmail che bloccavano la connessione. Ora funziona! – Aradmey

risposta

17

è necessario per consentire "app meno sicure":

https://support.google.com/accounts/answer/6010255

Codice:

try 
{ 
    new SmtpClient 
    { 
     Host = "Smtp.Gmail.com", 
     Port = 587, 
     EnableSsl = true, 
     Timeout = 10000, 
     DeliveryMethod = SmtpDeliveryMethod.Network, 
     UseDefaultCredentials = false, 
     Credentials = new NetworkCredential("[email protected]", "MyPassword") 
    }.Send(new MailMessage {From = new MailAddress("[email protected]", "MyName"), To = {"[email protected]"}, Subject = "Subject", Body = "Message", BodyEncoding = Encoding.UTF8}); 
    erroremail.Text = "Email has been sent successfully."; 
} 
catch (Exception ex) 
{ 
    erroremail.Text = "ERROR: " + ex.Message; 
} 
+0

@Anatoly Ha già pubblicato un link nella sua risposta. App meno sicura è un'impostazione dell'account Google che consente alla tua app di inviare e-mail per conto dell'utente. –

+0

Mi chiedo che cosa mancano i "moderni standard di sicurezza" SmtpClient e se esiste un'alternativa nativa .NET che non richiede l'impostazione di questa opzione di account. – Slight

+0

Ciao, puoi commentare come vengono protette le credenziali di rete in questo caso? Ok, vedo - SSL abilitato. Ma nel mio caso - ho un timeout ... – Prokurors