Как установить имя пользователя и пароль для объекта SmtpClient в .NET?

Я вижу разные версии конструктора, один использует информацию из web.config, один указывает хост, а другой – хост и порт. Но как установить имя пользователя и пароль для чего-то другого, отличного от web.config? У нас есть проблема, когда наш внутренний smtp заблокирован некоторыми высокозащищенными клиентами, и мы хотим использовать их smtp-сервер, есть ли способ сделать это из кода вместо web.config?

В этом случае, как я могу использовать учетные данные web.config, если они не доступны из базы данных, например?

public static void CreateTestMessage1(string server, int port) { string to = "[email protected]"; string from = "[email protected]"; string subject = "Using the new SMTP client."; string body = @"Using this new feature, you can send an e-mail message from an application very easily."; MailMessage message = new MailMessage(from, to, subject, body); SmtpClient client = new SmtpClient(server, port); // Credentials are necessary if the server requires the client // to authenticate before it will send e-mail on the client's behalf. client.Credentials = CredentialCache.DefaultNetworkCredentials; try { client.Send(message); } catch (Exception ex) { Console.WriteLine("Exception caught in CreateTestMessage1(): {0}", ex.ToString()); } } 

SmtpClient может использоваться кодом:

 SmtpClient mailer = new SmtpClient(); mailer.Host = "mail.youroutgoingsmtpserver.com"; mailer.Credentials = new System.Net.NetworkCredential("yourusername", "yourpassword"); 

Использовать NetworkCredential

Да, просто добавьте эти две строки в свой код.

 System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username", "password"); client.Credentials = credentials; 
 SmtpClient MyMail = new SmtpClient(); MailMessage MyMsg = new MailMessage(); MyMail.Host = "mail.eraygan.com"; MyMsg.Priority = MailPriority.High; MyMsg.To.Add(new MailAddress(Mail)); MyMsg.Subject = Subject; MyMsg.SubjectEncoding = Encoding.UTF8; MyMsg.IsBodyHtml = true; MyMsg.From = new MailAddress("username", "displayname"); MyMsg.BodyEncoding = Encoding.UTF8; MyMsg.Body = Body; MyMail.UseDefaultCredentials = false; NetworkCredential MyCredentials = new NetworkCredential("username", "password"); MyMail.Credentials = MyCredentials; MyMail.Send(MyMsg); 

Поскольку не все мои клиенты используют аутентифицированные учетные записи SMTP, я прибегал к использованию учетной записи SMTP, только если значения ключа приложения поставляются в файле web.config.

Вот код VB:

 sSMTPUser = ConfigurationManager.AppSettings("SMTPUser") sSMTPPassword = ConfigurationManager.AppSettings("SMTPPassword") If sSMTPUser.Trim.Length > 0 AndAlso sSMTPPassword.Trim.Length > 0 Then NetClient.Credentials = New System.Net.NetworkCredential(sSMTPUser, sSMTPPassword) sUsingCredentialMesg = "(Using Authenticated Account) " 'used for logging purposes End If NetClient.Send(Message) 
Interesting Posts

Как я могу рассматривать предупреждение MSB3245 (не может разрешить ссылку) как ошибку?

Совместное использование папки / раздела между Mac OS X и Linux в Macbook pro?

Дизайн программного обеспечения и архитектура программного обеспечения

Как найти последний файл в каталоге с помощью .NET и без цикла?

Как установить USB Prober из SDK разработчика на Mac OS X?

Как использовать UrlFetchApp с учетными данными? Скрипты Google

Почему переменная NSInteger должна быть отброшена дольше при использовании в качестве аргумента формата?

При загрузке Windows 7, каждый раз, когда sceen появляется в течение 10 минут, «настраивая обновления 0%», прежде чем продолжить

Скрыть съемное устройство от проводника?

Android: доступ к файлу базы данных sqlite для файлов с расширением .sqlite

RegEx: присвоение значений между кавычками

JavaFX запускает другое приложение

как использовать таймер поворота для запуска / остановки анимации

Программно перемещаться с помощью реагирующего маршрутизатора

Извлечение MSI из EXE

Давайте будем гением компьютера.