2010-05-04 14 views
122

Kurucunun farklı sürümlerini görüyorum, biri web.config'ten bilgi kullanıyor, biri ana bilgisayarı ve bir ana bilgisayarı ve bağlantı noktasını belirtir. Ancak kullanıcı adı ve şifreyi web.config dosyasından farklı bir şeye nasıl ayarlayabilirim? İç smtp'mizin yüksek güvenlikli bazı müşteriler tarafından engellendiği ve smtp sunucularını kullanmak istediğimiz sorun var, bunu web.config yerine koddan yapmanın bir yolu var mı?.NET'te SmtpClient nesnesi için kullanıcı adı ve parola nasıl ayarlanır?

Bu durumda, örneğin veritabanından hiçbiri yoksa web.config kimlik bilgilerini nasıl kullanırım?

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

cevap

243

SmtpClient kod tarafından kullanılabilir: kimliği doğrulanmış SMTP hesaplarını kullanmayan tüm müşterilerimin yana

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

Bir varsayılan olarak web.config olanları kullanacağı set yoksa? – BigOmega

+0

Hayır, tedarik edilirse veya hiçbir şey olmazsa DefaultNetworkCredentials olur. – pipelinecache

+2

@pipelinecache Ryan, sağlanmışsa, hiçbir kimlik bilgisi sağlanmazsa, web.config – Tomas

23

Kullanım NetworkCredential

Evet, sadece kod Bu iki satırı ekleyin.

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

client.Credentials = credentials; 
2
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); 
+4

Sadece cevabın cevabını yeniden yayınlamayı denemelisiniz –

0

, ben app anahtar değerleri sağlanır yalnızca SMTP hesabını kullanarak başvurdu web.config dosyasında. İşte

VB kodudur:

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) 
İlgili konular