2010-05-04 12 views
122

मैं कन्स्ट्रक्टर के विभिन्न संस्करण देखता हूं, एक web.config से जानकारी का उपयोग करता है, एक मेजबान निर्दिष्ट करता है, और एक मेजबान और बंदरगाह। लेकिन मैं web.config से कुछ अलग करने के लिए उपयोगकर्ता नाम और पासवर्ड कैसे सेट करूं? हमारे पास ऐसा मुद्दा है जहां हमारे आंतरिक SMTP को कुछ उच्च सुरक्षा क्लाइंट द्वारा अवरोधित किया गया है और हम उनके smtp सर्वर का उपयोग करना चाहते हैं, क्या web.config के बजाय कोड से ऐसा करने का कोई तरीका है?.NET में SmtpClient ऑब्जेक्ट के लिए उपयोगकर्ता नाम और पासवर्ड कैसे सेट करें?

इस मामले में यदि मैं डेटाबेस से कोई भी उपलब्ध नहीं है, तो मैं 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()); 
    }    
} 

उत्तर

243

SmtpClient कोड के द्वारा प्रयोग किया जा सकता है: प्रमाणीकृत SMTP खातों का उपयोग

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

अगर मैं निर्धारित नहीं करते हैं एक यह डिफ़ॉल्ट रूप से web.config से लोगों का उपयोग करेंगे? – BigOmega

+0

यदि आपूर्ति या कुछ भी नहीं है तो यह डिफ़ॉल्ट नेटवर्क प्रमाणपत्र नहीं होगा। – pipelinecache

+2

@pipelinecache रयान सही है, अगर कोई प्रमाण पत्र प्रदान नहीं किया गया है तो यह वेब.config – Tomas

23

उपयोग NetworkCredential

हाँ, बस अपने कोड में ये दो पंक्तियाँ जोड़ें।

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

आपको जवाब में केवल रिवेंट कोड पोस्ट करने का प्रयास करना चाहिए –

0

मेरे ग्राहकों के सभी के बाद से, मैं एसएमटीपी खाते का उपयोग कर का सहारा ही अगर एप्लिकेशन कुंजी मान आपूर्ति की जाती है 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)