Как я могу сделать 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);