Как я могу сделать аутентификацию SMTP в C#
Я создаю новый ASP.NET веб-приложение, которое использует SMTP для отправки сообщений. Проблема заключается в том, что smtp не был аутентифицирован от того, кто отправляет сообщение.
Как я могу сделать аутентификацию SMTP в моей программе? есть ли у C# класс, который имеет атрибут для ввода имени пользователя и пароля?
6 ответов:
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 = "<h1>your message body</h1>"; message.To.Add("to@anydomain.com"); try { smtpClient.Send(message); } catch(Exception ex) { //Error, could not send the message Response.Write(ex.Message); } } }
вы можете использовать приведенный выше код.
убедитесь, что вы установили
SmtpClient.Credentials
после вызовSmtpClient.UseDefaultCredentials = false
.порядок важен, как параметр
SmtpClient.UseDefaultCredentials = false
сброситьSmtpClient.Credentials
к нулю.
установить полномочия свойство перед отправкой сообщения.
чтобы отправить сообщение через TLS / SSL, необходимо установить для Ssl класса SmtpClient значение true.
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);