Widzę różne wersje konstruktora, jeden używa informacji z web.config, jeden określa hosta, a drugi hosta i port. Ale jak ustawić inną nazwę użytkownika i hasło niż plik web.config? Mamy problem polegający na tym, że nasz wewnętrzny smtp jest blokowany przez niektórych klientów o wysokim poziomie bezpieczeństwa i chcemy użyć ich serwera smtp, czy istnieje sposób na zrobienie tego z kodu zamiast z pliku web.config?
W takim przypadku jak użyłbym poświadczeń web.config, jeśli na przykład żadne dane nie są dostępne w bazie danych?
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());
}
}
c#
smtpclient
CloudMeta
źródło
źródło
UseDefaultCredentials
jest ustawione na true, użyje wartości domyślnych, w przeciwnym razie najpierw zajrzy doCredentials
właściwości, a następnie do pliku web.config. Jeśli żadna nie jest ustawiona, wiadomość e-mail zostanie wysłana anonimowo.Posługiwać się
NetworkCredential
Tak, po prostu dodaj te dwie linie do swojego kodu.
źródło
źródło
Ponieważ nie wszyscy moi klienci używają uwierzytelnionych kont SMTP, uciekłem się do korzystania z konta SMTP tylko wtedy, gdy wartości kluczy aplikacji są podane w pliku web.config.
Oto kod VB:
źródło