¿Cómo puedo hacer que SMTP se autentique en C #

Creé una nueva aplicación web ASP.NET que usa SMTP para enviar mensajes. El problema es que el smtp no fue autenticado por quién envió el mensaje.

¿Cómo puedo autenticar SMTP en mi progtwig? ¿C # tiene una clase que tiene un atributo para ingresar nombre de usuario y contraseña?

using System.Net; using System.Net.Mail; using(SmtpClient smtpClient = new SmtpClient()) { var basicCredential = new NetworkCredential("username", "password"); using(MailMessage message = new MailMessage()) { MailAddress fromAddress = new MailAddress("from@yourdomain.com"); smtpClient.Host = "mail.mydomain.com"; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = basicCredential; message.From = fromAddress; message.Subject = "your subject"; // Set IsBodyHtml to true means you can send HTML email. message.IsBodyHtml = true; message.Body = "

your message body

"; message.To.Add("to@anydomain.com"); try { smtpClient.Send(message); } catch(Exception ex) { //Error, could not send the message Response.Write(ex.Message); } } }

Puede usar el código anterior.

Asegúrese de configurar SmtpClient.Credentials después de llamar a SmtpClient.UseDefaultCredentials = false .

El orden es importante ya que la configuración de SmtpClient.UseDefaultCredentials = false restablecerá SmtpClient.Credentials a null.

Establezca la propiedad Credentials antes de enviar el mensaje.

Para enviar un mensaje a través de TLS / SSL, debe establecer Ssl de la clase SmtpClient en verdadero.

 string to = "jane@contoso.com"; string from = "ben@contoso.com"; MailMessage message = new MailMessage(from, to); message.Subject = "Using the new SMTP client."; message.Body = @"Using this new feature, you can send an e-mail message from an application very easily."; SmtpClient client = new SmtpClient(server); // Credentials are necessary if the server requires the client // to authenticate before it will send e-mail on the client's behalf. client.UseDefaultCredentials = true; client.EnableSsl = true; client.Send(message); 

¿Cómo envías el mensaje?

Las clases en el espacio de nombres System.Net.Mail (que probablemente sea lo que debe usar) tienen soporte completo para la autenticación, ya sea especificado en Web.config o utilizando la propiedad SmtpClient.Credentials .

En mi caso, incluso después de seguir todo lo anterior. Tuve que actualizar mi proyecto de .net 3.5 a .net 4 para autorizar contra nuestro servidor de correo de intercambio interno de 2010.