Cómo enviar un correo electrónico con C # a través de Gmail

Me aparece un error al intentar enviar un correo electrónico a través de mi servicio web. Intenté habilitar el acceso a aplicaciones menos seguras desactivando la verificación en dos pasos y el inicio de sesión en la cuenta a través de un navegador web. Ninguna de las soluciones en SO me ha funcionado. Todavía estoy recibiendo:

Error: System.Net.Mail.SmtpException: el servidor SMTP requiere una conexión segura o el cliente no fue autenticado. La respuesta del servidor fue: 5.5.1 Autenticación requerida.

¿Qué puedo hacer para solucionar este 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("myemail@gmail.com", "mypassword"); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; // draft the email MailAddress fromAddress = new MailAddress("cse445emailservice@gmail.com"); 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; } } } 

Simplemente vaya aquí: aplicaciones menos seguras , inicie sesión usando su correo electrónico y contraseña que se utilizan para enviar correos electrónicos en su código c #, y elija Turn On .

También dirígete a este enlace y haz clic en Continuar Permitir el acceso a tu cuenta de Google

también lo edito un poco:

 public string sendit(string ReciverMail) { MailMessage msg = new MailMessage(); msg.From = new MailAddress("YourMail@gmail.com"); 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("YourMail@gmail.com", "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(); } } 

Si el código anterior no funciona, intente cambiarlo como en el siguiente código:

  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("YourMail@gmail.com", "YourPassword");