Come inviare una e-mail con C # tramite Gmail

Ricevo un errore quando tento di inviare una e-mail tramite il mio servizio web. Ho provato ad abilitare l’accesso ad app meno sicure disabilitando la verifica in due passaggi e accedendo all’account tramite un browser web. Nessuna delle soluzioni su SO ha funzionato per me. Sto ancora ottenendo:

Errore: System.Net.Mail.SmtpException: il server SMTP richiede una connessione protetta o il client non è stato autenticato. La risposta del server era: 5.5.1 Autenticazione richiesta.

Cosa posso fare per risolvere questo problema?

namespace EmailService { public class Service1 : IService1 { public string SendEmail(string inputEmail, string subject, string body) { string returnString = ""; try { MailMessage email = new MailMessage(); SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; // set up the Gmail server smtp.EnableSsl = true; smtp.Port = 587; smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "mypassword"); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; // draft the email MailAddress fromAddress = new MailAddress("[email protected]"); email.From = fromAddress; email.To.Add(inputEmail); email.Subject = body; email.Body = body; smtp.Send(email); returnString = "Success! Please check your e-mail."; } catch(Exception ex) { returnString = "Error: " + ex.ToString(); } return returnString; } } } 

Basta andare qui: App meno sicure , accedere utilizzando l’e-mail e la password che utilizzano per l’invio della posta nel codice c # e scegliere Turn On .

Inoltre, vai a questo link e fai clic su Continua Permetti l’accesso al tuo account Google

anche io lo modifica un po ‘:

 public string sendit(string ReciverMail) { MailMessage msg = new MailMessage(); msg.From = new MailAddress("[email protected]"); msg.To.Add(ReciverMail); msg.Subject = "Hello world! " + DateTime.Now.ToString(); msg.Body = "hi to you ... :)"; SmtpClient client = new SmtpClient(); client.UseDefaultCredentials = true; client.Host = "smtp.gmail.com"; client.Port = 587; client.EnableSsl = true; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Credentials = new NetworkCredential("[email protected]", "YourPassword"); client.Timeout = 20000; try { client.Send(msg); return "Mail has been successfully sent!"; } catch (Exception ex) { return "Fail Has error" + ex.Message; } finally { msg.Dispose(); } } 

Se il codice sopra riportato non funziona, prova a cambiarlo come il seguente codice:

  SmtpClient client = new SmtpClient(); client.Host = "smtp.gmail.com"; client.Port = 587; client.EnableSsl = true; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential("[email protected]", "YourPassword");