Comment définir le nom d’utilisateur et le mot de passe pour l’object SmtpClient dans .NET?

Je vois différentes versions du constructeur, l’une utilise les informations de web.config, l’autre spécifie l’hôte et l’autre l’hôte et le port. Mais comment définir le nom d’utilisateur et le mot de passe pour quelque chose de différent de web.config? Nous avons le problème où notre smtp interne est bloqué par certains clients de haute sécurité et nous voulons utiliser leur serveur smtp, y a-t-il un moyen de le faire à partir du code au lieu de web.config?

Dans ce cas, comment utiliser les informations d’identification web.config si aucune n’est disponible dans la firebase database, par exemple?

public static void CreateTestMessage1(ssortingng server, int port) { ssortingng to = "jane@contoso.com"; ssortingng from = "ben@contoso.com"; ssortingng subject = "Using the new SMTP client."; ssortingng 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.ToSsortingng()); } } 

    Le SmtpClient peut être utilisé par code:

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

    Utiliser NetworkCredential

    Oui, ajoutez simplement ces deux lignes à votre code.

     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); 

    Comme tous mes clients n’utilisent pas de comptes SMTP authentifiés, j’ai eu recours au compte SMTP uniquement si les valeurs de clé de l’application sont fournies dans le fichier web.config.

    Voici le code 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)