Как я могу сделать SMTP аутентифицированным в С#

Я создаю новое веб-приложение ASP.NET, использующее SMTP для отправки сообщения. Проблема заключается в том, что smtp не был аутентифицирован, кто отправил сообщение.

Как я могу сделать SMTP аутентифицированным в моей программе? у С# есть класс, у которого есть атрибут для ввода имени пользователя и пароля?

Ответ 1

using System.Net;
using System.Net.Mail;


SmtpClient smtpClient = new SmtpClient();
NetworkCredential basicCredential = 
    new NetworkCredential("username", "password"); 
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);
}

Вы можете использовать приведенный выше код.

Ответ 2

Убедитесь, что вы установили SmtpClient.Credentials после вызов SmtpClient.UseDefaultCredentials = false.

Порядок важен, так как установка SmtpClient.UseDefaultCredentials = false будет reset SmtpClient.Credentials равным нулю.

Ответ 3

Перед отправкой сообщения установите свойство Credentials.

Ответ 4

Как вы отправляете сообщение?

Классы в пространстве имен System.Net.Mail (вероятно, что вы должны использовать) имеют полную поддержку аутентификации, либо указанную в Web.config, либо с помощью свойства SmtpClient.Credentials.

Ответ 5

Чтобы отправить сообщение через TLS/SSL, вам необходимо установить для Ssl класса SmtpClient значение true.

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 behalf.
client.UseDefaultCredentials = true;
client.EnableSsl = true;
client.Send(message);