operación - ¿Cómo puedo hacer que SMTP se autentique en C#
send email c# smtp server (6)
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 programa? ¿C # tiene una clase que tiene un atributo para ingresar nombre de usuario y contraseña?
¿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
.
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.
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.
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 = "[email protected]";
string from = "[email protected]";
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);
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("[email protected]");
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 = "<h1>your message body</h1>";
message.To.Add("[email protected]");
try
{
smtpClient.Send(message);
}
catch(Exception ex)
{
//Error, could not send the message
Response.Write(ex.Message);
}
}
}
Puede usar el código anterior.