2009-04-16 15 views
62

मेरे पास एक मानक Google Apps खाता है। मैंने Google Apps के माध्यम से एक कस्टम डोमेन सेटअप किया है। जब मैं जीमेल इंटरफ़ेस का उपयोग करता हूं तो मैं Google Apps के माध्यम से सफलतापूर्वक ईमेल भेजने और प्राप्त करने में सक्षम हूं। हालांकि, मैं कोड के माध्यम से एक ईमेल भेजना चाहता हूँ। आदेश में इस प्रयास करने के लिए में, मैं निम्नलिखित कोड कोशिश कर रहे हैं:Google Apps खाते के माध्यम से सी # के माध्यम से ईमेल भेजें

MailMessage mailMessage = new MailMessage(); 
mailMessage.To.Add("[email protected]"); 
mailMessage.Subject = "Test"; 
mailMessage.Body = "<html><body>This is a test</body></html>"; 
mailMessage.IsBodyHtml = true; 

// Create the credentials to login to the gmail account associated with my custom domain 
string sendEmailsFrom = "[email protected]";    
string sendEmailsFromPassword = "password"; 
NetworkCredential cred = new NetworkCredential(sendEmailsFrom, sendEmailsFromPassword); 

SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587); 
mailClient.EnableSsl = true; 
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
mailClient.UseDefaultCredentials = false; 
mailClient.Timeout = 20000; 
mailClient.Credentials = cred; 
mailClient.Send(mailMessage); 

जब संदेश विधि तक पहुँच जाता है, एक अपवाद है कि फेंक दिया जाता है कहता है:

"एसएमटीपी सर्वर एक सुरक्षित कनेक्शन की आवश्यकता है या ग्राहक प्रमाणीकृत नहीं था। सर्वर प्रतिक्रिया था: 5.5.1 प्रमाणीकरण आवश्यक है। "

मैं Google के माध्यम से अपने कस्टम डोमेन के माध्यम से ईमेल कैसे भेजूं?

धन्यवाद!

+0

करता है पोर्ट 465 काम वांछित के लिए सक्षम है? – Lucero

+0

उपरोक्त कोड के साथ समस्या क्या है? – Marko

+1

मुझे टाइमआउट समस्या मिल रही है, लेकिन सभी कोड स्मेपल को देखकर, ऐसा लगता है कि मेरे कोड और सेटिंग्स सही हैं। –

उत्तर

90

आपके कोड में सभी smtp सेटिंग्स को हार्डकोड करने की कोई आवश्यकता नहीं है। उन्हें बजाय web.config में रखो। इस तरह यदि आप आवश्यक हो तो इन सेटिंग्स को एन्क्रिप्ट कर सकते हैं और अपने आवेदन को दोबारा बिना फ्लाई पर बदल सकते हैं।

<configuration> 
    <system.net> 
    <mailSettings> 
     <smtp from="[email protected]" deliveryMethod="Network"> 
      <network host="smtp.gmail.com" port="587" 
       userName="[email protected]" password="password"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 
</configuration> 

समाप्ति जब आप बस अपने SmtpClient पर SSL सक्षम ईमेल भेजें:

var message = new MailMessage("[email protected]"); 
// here is an important part: 
message.From = new MailAddress("[email protected]", "Mailer"); 
// it's superfluous part here since from address is defined in .config file 
// in my example. But since you don't use .config file, you will need it. 

var client = new SmtpClient(); 
client.EnableSsl = true; 
client.Send(message); 

यह सुनिश्चित करें कि आप उसी ईमेल पते जिसके साथ आप जीमेल पर प्रमाणित करने के लिए कोशिश कर रहे हैं से ईमेल भेज रहे हैं।

नोट: .NET 4.0 से शुरू करना आप web.config में enableSsl = "true" को कोड में सेट करने के विरोध में डाल सकते हैं।

+1

पूर्ण वेब कॉन्फ़िगर <कॉन्फ़िगरेशन> के अंतर्गत है और होना चाहिए <मेलसेटिंग> <नेटवर्क होस्ट =" smtp.gmail.com "पोर्ट =" 587 " उपयोगकर्ता नाम =" [email protected] " पासवर्ड = "पासवर्ड" />

+0

आप कॉन्फ़िगरेशन में enableSsl भी डाल सकते हैं। –

+1

@Shay - कॉन्फ़िगरेशन में आप सक्षम कैसे कर सकते हैं? –

7

को बंदरगाह यह है कि मैं क्या WPF 4

में उपयोग है
SmtpClient client = new SmtpClient(); 
client.Credentials = new NetworkCredential("[email protected]", "[email protected]$$w0rD"); 
client.Port = 587; 
client.Host = "smtp.gmail.com"; 
client.EnableSsl = true; 

try { 
    MailAddress 
     maFrom = new MailAddress("[email protected]", "Sender's Name", Encoding.UTF8), 
     maTo = new MailAddress("[email protected]", "Recipient's Name", Encoding.UTF8); 
    MailMessage mmsg = new MailMessage(maFrom.Address, maTo.Address); 
    mmsg.Body = "<html><body><h1>Some HTML Text for Test as BODY</h1></body></html>"; 
    mmsg.BodyEncoding = Encoding.UTF8; 
    mmsg.IsBodyHtml = true; 
    mmsg.Subject = "Some Other Text as Subject"; 
    mmsg.SubjectEncoding = Encoding.UTF8; 

    client.Send(mmsg); 
    MessageBox.Show("Done"); 
} catch (Exception ex) { 
    MessageBox.Show(ex.ToString(), ex.Message); 
    //throw; 
} 

फायरवॉल और एंटी वायरस के लिए घड़ी। ये डरावनी चीजें ईमेल भेजने वाले अनुप्रयोगों को अवरुद्ध करती हैं। मैं मैकएफ़ी एंटरप्राइज़ का उपयोग करता हूं और मुझे ईमेल भेजने में सक्षम होने के लिए निष्पादन योग्य नाम (जैसे बाज़ार। * Bazar.exe और Bazar.vshost.exe दोनों के लिए) जोड़ना होगा ...

+0

यह दिखाने के लिए धन्यवाद कि इसे अकेले कोड में कैसे किया जाए :-) –

+0

मैं "हमसे संपर्क करें" पृष्ठ बनाना चाहता हूं ताकि उपयोगकर्ता साइट-एडमिन पर ईमेल भेज सकें। क्या "से" को उनके ईमेल पते पर सेट करने का कोई तरीका है ?? – Shimmy

+0

आप प्रेषक के पते को धोखा दे सकते हैं; लेकिन स्पैम के रूप में आपके ईमेल को चिह्नित करने का एक अच्छा खतरा है। मेरा सुझाव है कि आप [email protected] से व्यवस्थापक और उस व्यक्ति से ईमेल भेजें जो आपसे संपर्क करने का प्रयास कर रहा है। फिर आपका व्यवस्थापक सभी को एक जवाब भेज सकता है। – Achilles

3

कुछ भी करने की आवश्यकता नहीं है । बस अपने चालू खाते में पहली बार लॉगिन करें और निर्देशों का पालन करें।

आपकी समस्या हल हो जाएगी। ऐसा इसलिए होता है क्योंकि आपने Google ऐप्स में खाता बनाया था लेकिन लॉगिन नहीं किया था। बस लॉगिन करें और निर्देशों का पालन करें और कोशिश करें।

+0

यह देखते हुए कि ओपी का कोड ठीक लगता है, यह वास्तव में समस्या हो सकती है। – Dermot

0

मेरे कोड पोर्ट पर TLS का उपयोग = 587 (एसएसएल बंदरगाह होना चाहिए 465), लेकिन अभी भी जरूरत है EnableSsl = सच

SmtpClient smtp = new SmtpClient(); 
smtp.Host = "smtp.gmail.com"; 
smtp.Port = 587; 
smtp.EnableSsl = true; 
smtp.UseDefaultCredentials = false; 
NetworkCredential credentials = new NetworkCredential(); 
credentials.UserName = "INSERT EMAIL"; 
credentials.Password = "INSERT PASSWORD"; 
smtp.Credentials = credentials; 

MailAddress addressFrom = new MailAddress(credentials.UserName); 
MailAddress addressTo = new MailAddress("INSERT RECIPIENT"); 
MailMessage msg = new MailMessage(addressFrom, addressTo); 
msg.Subject = "SUBJECT" 
msg.Body = "BODY"; 

smtp.Send(msg); 

सूचना smtp.google.com से जुड़ रहा है अपने जी SUITE खाता

पर इन महत्वपूर्ण आवश्यक शर्तें
  • सुनिश्चित करें कि आपके द्वारा उपयोग किए गए उपयोगकर्ता नाम ने कैप्चा शब्द सत्यापन परीक्षण को साफ़ कर दिया है जो तब दिखाई देता है जब आप पहली बार साइन इन करते हैं।
  • सुनिश्चित करें कि खाता एक सुरक्षित पासवर्ड है - https://support.google.com/accounts/answer/32040
  • सुनिश्चित करें कि कम सुरक्षित ऐप्स बेहतर हो सकता है खाते- https://support.google.com/a/answer/6260879
संबंधित मुद्दे