web-dev-qa-db-fra.com

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

Je vois différentes versions du constructeur, on utilise les informations de web.config, on spécifie l'hôte, et l'autre l'hôte et le port. Mais comment définir un nom d'utilisateur et un mot de passe différents 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. Existe-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 base de données, par exemple?

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());
    }              
}
144
MetaGuru

Le SmtpClient peut être utilisé par le code:

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

Utilisez NetworkCredential

Oui, il suffit d'ajouter ces deux lignes à votre code.

System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username", "password");

client.Credentials = credentials;
25
Gabe
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);
6
M.Alaghemand