Enviar correo electrónico a través de C # a través de la cuenta de Google Apps

Tengo una cuenta estándar de Google Apps. Configuré un dominio personalizado a través de Google Apps. Puedo enviar y recibir correos electrónicos exitosamente a través de Google Apps cuando uso la interfaz de Gmail. Sin embargo, quiero enviar un correo electrónico a través del código. Para intentar esto, he estado intentando el siguiente código:

MailMessage mailMessage = new MailMessage(); mailMessage.To.Add("someone@somewhere.com"); mailMessage.Subject = "Test"; mailMessage.Body = "This is a test"; mailMessage.IsBodyHtml = true; // Create the credentials to login to the gmail account associated with my custom domain string sendEmailsFrom = "emailAddress@mydomain.com"; string sendEmailsFromPassword = "password"; NetworkCredential cred = new NetworkCredential(sendEmailsFrom, sendEmailsFromPassword); SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587); mailClient.EnableSsl = true; mailClient.DeliveryMethod = SmtpDeliveryMethod.Network; mailClient.UseDefaultCredentials = false; mailClient.Timeout = 20000; mailClient.Credentials = cred; mailClient.Send(mailMessage); 

Cuando se alcanza el método Send, se lanza una excepción que dice:

“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”.

¿Cómo envío correos electrónicos a través de mi dominio personalizado a través de Google?

¡Gracias!

No hay necesidad de codificar todas las configuraciones smtp en su código. Póngalos en web.config en su lugar. De esta forma, puede encriptar estas configuraciones si es necesario y cambiarlas sobre la marcha sin volver a comstackr su aplicación.

          

Finalice cuando envíe un correo electrónico, simplemente habilite SSL en su SmtpClient:

 var message = new MailMessage("navin@php.net"); // here is an important part: message.From = new MailAddress("example@domain.com", "Mailer"); // it's superfluous part here since from address is defined in .config file // in my example. But since you don't use .config file, you will need it. var client = new SmtpClient(); client.EnableSsl = true; client.Send(message); 

Asegúrese de enviar un correo electrónico desde la misma dirección de correo electrónico con la que intenta autenticar en Gmail.

Nota : Comenzando con .NET 4.0 puede insertar enableSsl = “true” en web.config en lugar de configurarlo en el código.

Esto es lo que uso en WPF 4

 SmtpClient client = new SmtpClient(); client.Credentials = new NetworkCredential("sender_email@domain.tld", "P@$$w0rD"); client.Port = 587; client.Host = "smtp.gmail.com"; client.EnableSsl = true; try { MailAddress maFrom = new MailAddress("sender_email@domain.tld", "Sender's Name", Encoding.UTF8), maTo = new MailAddress("recipient_email@domain2.tld", "Recipient's Name", Encoding.UTF8); MailMessage mmsg = new MailMessage(maFrom.Address, maTo.Address); mmsg.Body = "

Some HTML Text for Test as BODY

"; mmsg.BodyEncoding = Encoding.UTF8; mmsg.IsBodyHtml = true; mmsg.Subject = "Some Other Text as Subject"; mmsg.SubjectEncoding = Encoding.UTF8; client.Send(mmsg); MessageBox.Show("Done"); } catch (Exception ex) { MessageBox.Show(ex.ToString(), ex.Message); //throw; }

Esté atento a los Firewalls y Anti-Virus. Estas cosas escalofriantes tienden a bloquear las aplicaciones que envían correos electrónicos. Uso McAfee Enterprise y tengo que agregar el nombre del ejecutable (como Bazar. * Para Bazar.exe y Bazar.vshost.exe) para poder enviar correos electrónicos …

cambia el puerto a 465

No hay necesidad de hacer nada. Simplemente inicie sesión en su cuenta actual por primera vez y siga las instrucciones.

Tu problema se resolverá Ocurre porque creó la cuenta en las aplicaciones de Google pero no inició sesión. Simplemente inicie sesión y siga las instrucciones y pruebe.

Mi código se está conectando a smtp.google.com con TLS en Puerto = 587 (SSL debería ser el puerto 465) pero aún necesita EnableSsl = true

 SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Port = 587; smtp.EnableSsl = true; smtp.UseDefaultCredentials = false; NetworkCredential credentials = new NetworkCredential(); credentials.UserName = "INSERT EMAIL"; credentials.Password = "INSERT PASSWORD"; smtp.Credentials = credentials; MailAddress addressFrom = new MailAddress(credentials.UserName); MailAddress addressTo = new MailAddress("INSERT RECIPIENT"); MailMessage msg = new MailMessage(addressFrom, addressTo); msg.Subject = "SUBJECT" msg.Body = "BODY"; smtp.Send(msg); 

Tenga en cuenta estos importantes requisitos previos en su cuenta G SUITE