2008-11-18 10 views
61

में एसएमटीपी प्रमाणीकृत कैसे कर सकता हूं मैं नया एएसपी.NET वेब एप्लिकेशन बनाता हूं जो संदेश भेजने के लिए एसएमटीपी का उपयोग करता है। समस्या यह है कि संदेश भेजने वाले व्यक्ति को smtp प्रमाणीकृत नहीं किया गया था।मैं सी #

मैं अपने कार्यक्रम में एसएमटीपी प्रमाणीकृत कैसे कर सकता हूं? क्या सी # में एक कक्षा है जिसमें उपयोगकर्ता नाम और पासवर्ड दर्ज करने के लिए विशेषता है?

उत्तर

125
using System.Net; 
using System.Net.Mail; 


SmtpClient smtpClient = new SmtpClient(); 
NetworkCredential basicCredential = 
    new NetworkCredential("username", "password"); 
MailMessage message = new MailMessage(); 
MailAddress fromAddress = new MailAddress("[email protected]"); 

smtpClient.Host = "mail.mydomain.com"; 
smtpClient.UseDefaultCredentials = false; 
smtpClient.Credentials = basicCredential; 

message.From = fromAddress; 
message.Subject = "your subject"; 
//Set IsBodyHtml to true means you can send HTML email. 
message.IsBodyHtml = true; 
message.Body = "<h1>your message body</h1>"; 
message.To.Add("[email protected]"); 

try 
{ 
    smtpClient.Send(message); 
} 
catch(Exception ex) 
{ 
    //Error, could not send the message 
    Response.Write(ex.Message); 
} 

आप उपरोक्त कोड का उपयोग कर सकते हैं।

+0

उपयोगकर्ता नाम और पासवर्ड कहां से आ रहा है? और mail.mydomain.com क्या है? क्या वह DNS नाम है? – Shyju

+5

वे आपका ईमेल पता और पासवर्ड हैं, mail.mydomain.com आपका एसएमटीपी सर्वर है (उदा। Smtp.gmail.com)। – Arief

+0

आपको मेलमैसेज ऑब्जेक्ट को किसी उपयोग कथन में लपेटना चाहिए (या अपने काम के बाद इसे निपटाना कॉल करें), है ना? – Ben

1

आप संदेश कैसे भेजते हैं?

System.Net.Mail नामस्थान (जो शायद आपको उपयोग करना चाहिए) में कक्षाएं प्रमाणीकरण के लिए पूर्ण समर्थन है, या तो Web.config में निर्दिष्ट है, या SmtpClient.Credentials संपत्ति का उपयोग कर।

6

संदेश भेजने से पहले Credentials संपत्ति सेट करें।

63

सुनिश्चित करें कि SmtpClient.CredentialsSmtpClient.UseDefaultCredentials = false पर कॉल करने के बाद सुनिश्चित करें।

ऑर्डर महत्वपूर्ण है क्योंकि SmtpClient.UseDefaultCredentials = falseSmtpClient.Credentials को शून्य पर रीसेट कर देगा।

+8

अगर मैं इसे कुछ और बार बढ़ा सकता हूं, तो मैं चाहता हूं। – Joshua

+1

ओमजी मैंने यह जवाब देखने से पहले इतना समय खो दिया है !! धन्यवाद श्रीमान +1! – avidenic

+2

यह पुराना है, लेकिन सोना; अरे यह – MihaiC

1

टीएलएस/एसएसएल के माध्यम से एक संदेश भेजने के लिए, आपको SmtpClient क्लास के एसएसएल को सत्य में सेट करने की आवश्यकता है।

string to = "[email protected]"; 
string from = "[email protected]"; 
MailMessage message = new MailMessage(from, to); 
message.Subject = "Using the new SMTP client."; 
message.Body = @"Using this new feature, you can send an e-mail message from an application very easily."; 
SmtpClient client = new SmtpClient(server); 
// Credentials are necessary if the server requires the client 
// to authenticate before it will send e-mail on the client's behalf. 
client.UseDefaultCredentials = true; 
client.EnableSsl = true; 
client.Send(message); 
+0

बेहतर उत्तर देने के लिए एसएसएल बनाम एसएमटीपी क्लाइंट के बारे में कुछ कोड उदाहरण लिखें –