SMTP सर्वर को सुरक्षित कनेक्शन की आवश्यकता होती है या क्लाइंट प्रमाणित नहीं किया गया था। सर्वर प्रतिक्रिया थी: 5.5.1 प्रमाणीकरण आवश्यक है?


110

मैं अपने आवेदन से एक ईमेल भेजना चाहता हूं और मैंने मेल भेजने के लिए निम्नलिखित कोड लिखा है

    MailMessage msg = new MailMessage();

    msg.From = new MailAddress("mymailid");
    msg.To.Add("receipientid");
    msg.Subject = "test";
    msg.Body = "Test Content";
    msg.Priority = MailPriority.High;

    SmtpClient client = new SmtpClient();

    client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com");
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.EnableSsl = true;
    client.UseDefaultCredentials = true;

    client.Send(msg);

मैं इसे लोकलहोस्ट पर चला रहा हूं इसलिए इसे भेजने में मैं क्या गलती कर रहा हूं।

जब मैं बटन भेजता हूं तो यह एक त्रुटि देता है

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

Web.config फ़ाइल में कोड

 <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />   
    <add key="smtpServer" value="smtp.gmail.com" />
    <add key="EnableSsl" value = "true"/>
    <add key="smtpPort" value="587" />
    <add key="smtpUser" value="sender@gmail.com" />
    <add key="smtpPass" value="mypassword" />
    <add key="adminEmail" value="sender@gmail.com" />
  </appSettings>
  <system.net>
    <mailSettings>
      <smtp from="sender@gmail.com">
        <network host="smtp.gmail.com" password="mypassword" port="587" userName="sender@gmail.com"  enableSsl="true"/>
      </smtp>
    </mailSettings>
  </system.net>

मुझे इस त्रुटि को हल करने और मेल भेजने के लिए क्या करना चाहिए ??



मुझे लगता है कि आपको इस उत्तर को भी देखना पड़ सकता है: stackoverflow.com/a/9572958/1136253
mrbengi

मुझे भी यही समस्या थी। जाँच करें [यह पोस्ट] [१] [१]: stackoverflow.com/a/20186909/709340
मोस्लेम हादी २

आपको कॉन्फ़िगरेशन फ़ाइल में SMTP कॉन्फ़िगरेशन डेटा निर्दिष्ट करने पर विचार करना चाहिए और उन्हें एक कोड में अधिलेखित नहीं करना चाहिए
माइकल फ़्रीजिम

जवाबों:


62

पहले जीमेल के सुरक्षा संबंधी मुद्दों के लिए जाँच करें। आपने gmail में डबल प्रमाणीकरण सक्षम किया होगा। यदि आपको कोई सुरक्षा अलर्ट मिल रहा है, तो अपने जीमेल इनबॉक्स को भी देखें। ऐसे मामलों में नीचे दिए गए @mjb के अन्य उत्तर की जांच करें

नीचे बहुत सामान्य बात यह है कि मैं हमेशा ऐसे मुद्दों के लिए पहले जांच करता हूं

client.UseDefaultCredentials = true;

इसे असत्य पर सेट करें।

नोट @ राजा का उत्तर - क्लाइंट सेट करने से पहले आपको क्लाइंट को सेट करना होगा।


2
उस स्थिति में आपको अपना कोड साझा करना चाहिए। उपरोक्त उत्तर प्रश्न में कोड के लिए है
रौनक पटेल

7
नोट @ राजा का जवाब - क्लाइंट सेट करने से पहले आपको क्लाइंट को सेट करना होगा। यूज़डिफॉल्ट क्रेडेंशियल्स सेट करने से पहले । क्रेडिट
एरन

1
यह जवाब काम नहीं करेगा, मुझे लगता है कि ज्यादातर लोगों को जीमेल पर सुरक्षा का सामना करना पड़ा। एक उचित समाधान के लिए mjb का उत्तर देखें
जैरी लियांग

2
: - यह भी सुनिश्चित करें "कैप्चा" अक्षम किया गया है इस आवश्यक हो सकता है आप एक दूरस्थ सर्वर पर स्क्रिप्ट चला रहे हैं (आवश्यक नहीं स्थानीय मशीन पर चल रहा है) accounts.google.com/DisplayUnlockCaptcha
जेन्स

3
क्लाइंट सेट करना। UseDefaultCredentials = false; क्लाइंट से पहले। क्रेडेंशियल्स और क्लाइंट सेट करना ।EnableSsl = true; मेरे मामले में चाल चली।
स्टैक किया गया

139

मेरी भी यही समस्या है।

मुझे इसका हल मिल गया है:

Google कुछ एप्लिकेशन या उपकरणों के प्रयासों में साइन इन को रोक सकता है जो आधुनिक सुरक्षा मानकों का उपयोग नहीं करते हैं। चूंकि इन ऐप्स और डिवाइस को तोड़ना आसान है, इसलिए इन्हें ब्लॉक करना आपके अकाउंट को सुरक्षित रखने में मदद करता है।

एप्लिकेशन के कुछ उदाहरण जो नवीनतम सुरक्षा मानकों का समर्थन नहीं करते हैं, उनमें शामिल हैं:

  • आपके iPhone या iPad पर मेल ऐप iOS 6 या उससे नीचे के साथ
  • 8.1 रिलीज से पहले आपके विंडोज फोन पर मेल एप
  • कुछ डेस्कटॉप मेल क्लाइंट जैसे Microsoft आउटलुक और मोज़िला थंडरबर्ड

इसलिए, आपको अपने Google खाते में कम सुरक्षित साइन-इन (या कम सुरक्षित ऐप एक्सेस ) को सक्षम करना होगा।

Google खाते में साइन इन करने के बाद:

https://www.google.com/settings/security/lesssecureapps
या
https://myaccount.google.com/lesssecureapps

C # में, आप निम्न कोड का उपयोग कर सकते हैं:

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("email@gmail.com");
    mail.To.Add("somebody@domain.com");
    mail.Subject = "Hello World";
    mail.Body = "<h1>Hello</h1>";
    mail.IsBodyHtml = true;
    mail.Attachments.Add(new Attachment("C:\\file.zip"));

    using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
    {
        smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }
}

-------------------
नीचे टिप्पणी क्षेत्र में माइकल फ्रीजिम द्वारा साझा की गई जानकारी:
स्क्रीनशॉट के साथ इसी तरह का जवाब https://stackoverflow.com/a/32457468/52277


1
यह सुनिश्चित करने के साथ कि एसएसएल को सक्षम किया गया था कोड में चमत्कार काम किया है, बहुत बहुत धन्यवाद
क्राउच

1
उत्तर साझा करने के लिए आप @mjb से आगे हैं। यह मेरी जान बचाता है :)
Mayeed

3
यह चयनित उत्तर होना चाहिए
thatOneGuy

2
यह मेरा मुद्दा था, परेशानी से गुजरने और अधिक व्याख्यात्मक उत्तर देने के लिए धन्यवाद।
बोजन

मेरे लिए भी काम किया। थैंक्स @mjb
राजबीर जव्ंदा

44

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

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


2
मैं आधे घंटे के लिए इस समाधान की तलाश कर रहा हूं, आपका इंटरनेट पर एकमात्र छोटा पोस्ट है जो मैंने पाया है कि इस के आदेश का उल्लेख है। धन्यवाद दोस्त।

4
@ जोए राजा आप सिर्फ भयानक दोस्त हैं ..... 3 घंटे से इस बात की खोज कर रहे थे :)
जतिन

1
धन्यवाद @Joe राजा जो एमएस डॉक्स से गायब महत्वपूर्ण जानकारी है। यह उपयोगकर्ता नाम और पासवर्ड के साथ भेजने में मेरी समस्या का समाधान था।
हारून

1
यह आसानी से नजरअंदाज कर दिया जाता है, लेकिन आदेश महत्वपूर्ण है क्योंकि मुझे अभी पता चला है।
गेट्सइंज

1
हाँ। मेरा दिन बचाया। आपको क्रेडेंशियल सेट करने से पहले UseDefaultCredentials = false पर कॉल करने की आवश्यकता है।
रेंडेल

33

मैंने घंटों तक अलग-अलग चीजों को खोजा और आजमाया है। संक्षेप में, मुझे निम्नलिखित बातों पर ध्यान देना था:

  1. के smtp.gmail.comबजाय का उपयोग करेंsmtp.google.com
  2. पोर्ट 587 का उपयोग करें
  3. client.UseDefaultCredentials = false;क्रेडेंशियल सेट करने से पहले सेट करें
  4. कम सुरक्षित ऐप्स के लिए एक्सेस चालू करें
  5. सेट client.EnableSsl = true;

यदि इन चरणों से मदद नहीं मिली, तो इस उत्तर को देखें
शायद, आप इस System.Net.Mail FAQ पर भी कुछ उपयोगी पा सकते हैं ।


1
यह उत्तर बहुत उपयोगी है ... मेरी समस्या हल कर दी। बहुत बहुत धन्यवाद
हरि

1
अगर यह अभी भी काम नहीं कर रहा है, तो इस लिंक पर जाएं g.co/allowaccess और एक्सेस की अनुमति दें
पोर्टेकोई

1
"कम सुरक्षित ऐप्स तक पहुंच" ने मेरा दिन बचाया।
रोमिल कुमार जैन

1
यह हिस्सा मेरे लिए था: "कम सुरक्षित ऐप्स के लिए एक्सेस चालू करें"। धन्यवाद!
तद्ज T

11

अपने gmail अकाउंट में लॉगिन करने की कोशिश करें। यदि आप gmail SMTP का उपयोग करके ईमेल भेजते हैं तो यह लॉक हो जाता है। मुझे ईमेल की वह सीमा नहीं पता है जिसे आप लॉक होने से पहले भेज सकते हैं लेकिन यदि आप एक बार लॉगिन करते हैं तो यह कोड से फिर से काम करता है। सुनिश्चित करें कि आपकी webconfig सेटिंग अच्छी है।


वास्तव में सबसे अच्छा जवाब! मैंने फिर से लॉग इन किया और यह काम कर गया! पुनश्च: मुझे Google पर एक कैप्चा प्रदान करना था
बेलश

मुझे यह त्रुटि मिली क्योंकि मेरा Google खाता दो-कारक प्रमाणीकरण से सुरक्षित है। मैंने ईमेल भेजने के लिए एक समर्पित खाता बनाना समाप्त किया।
MvdD

8

इसे इस तरह आज़माएं, मैंने अभी कुछ हल्के बदलाव किए हैं:

MailMessage msg = new MailMessage();

msg.From = new MailAddress("mymailid@gmail.com");
msg.To.Add("receipientid@gmail.com");
msg.Subject = "test";
msg.Body = "Test Content";
//msg.Priority = MailPriority.High;


using (SmtpClient client = new SmtpClient())
{
    client.EnableSsl = true;
    client.UseDefaultCredentials = false;
    client.Credentials = new NetworkCredential("mymailid@gmail.com", "mypassword");
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;

    client.Send(msg);
}

इसके अलावा, अगर आपके पास मेल सेटिंग्स हैं, तो कृपया अपनी ऐप.कॉन्फ़िग फ़ाइल दिखाएं।


मैंने अभी तक इसमें कॉन्फ़िगर नहीं किया है। मुझे वहाँ क्या लिखना चाहिए?
अभय अंधरिया

मेरे mvc एप्लिकेशन में कोई app.config फ़ाइल नहीं है।
अभय अंधरिया

मैंने कई अन्य समाधानों की कोशिश की, लेकिन यह केवल एक ही काम किया। साभार
आदिल मलिक

4

कम सुरक्षित ऐप एक्सेस की अनुमति देने का प्रयास करें।

यहां, आप अपने जीमेल के साथ लॉगिन करने के बाद कम सुरक्षित ऐप को सक्षम कर सकते हैं।

https://myaccount.google.com/lesssecureapps

धन्यवाद।


3

मुझे एक ही समस्या का सामना करना पड़ा, यहां तक ​​कि मैंने झूठ के लिए "UseDefaultCredentials" सेट किया। बाद में मैंने पाया कि मूल कारण यह है कि मैंने अपने खाते में "2-चरणीय सत्यापन" चालू किया है। मैं इसे बंद करने के बाद, समस्या दूर हो गई है।


4
2 चरण सत्यापन बंद न करें। यह वहाँ एक कारण के लिए है। आप GMail सेटिंग में एप्लिकेशन-विशिष्ट पासवर्ड उत्पन्न कर सकते हैं और SmtpClient में इसका उपयोग कर सकते हैं। आपको सामान्य पासवर्ड को उजागर करने के बजाय ऐसा करना चाहिए।
डैनियल डायसन


2

यहां छवि विवरण दर्ज करें सुनिश्चित करें कि कम सुरक्षित एप्लिकेशन एक्सेस की अनुमति है।

        MailMessage mail = new MailMessage();
        mail.From = new MailAddress("xx@gmail.com");
        mail.Sender = new MailAddress("xx@gmail.com");
        mail.To.Add("external@emailaddress");
        mail.IsBodyHtml = true;
        mail.Subject = "Email Sent";
        mail.Body = "Body content from";

        SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
        smtp.UseDefaultCredentials = false;

        smtp.Credentials = new System.Net.NetworkCredential("xx@gmail.com", "xx");
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtp.EnableSsl = true;

        smtp.Timeout = 30000;
        try
        {

            smtp.Send(mail);
        }
        catch (SmtpException e)
        {
            textBox1.Text= e.Message;
        }

1
लिंक "एक्सेस कम सिक्योर ऐप" के लिए सेटिंग को टॉगल करने के लिए यहाँ है - google.com/settings/security/lesssecureapps सेटिंग बदलने से मुझे त्रुटि दूर करने में मदद नहीं मिली
mvark

1

नीचे मेरा कोड है। मेरी भी यही त्रुटि थी लेकिन समस्या यह थी कि मैंने अपना पासवर्ड गलत दिया था। नीचे दिया गया कोड पूरी तरह से काम करेगा।

            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");              
            mail.From = new MailAddress("fromaddress@gmail.com");
            mail.To.Add("toaddress1@gmail.com");
            mail.To.Add("toaddress2@gmail.com");
            mail.Subject = "Password Recovery ";
            mail.Body += " <html>";
            mail.Body += "<body>";
            mail.Body += "<table>";

            mail.Body += "<tr>";
            mail.Body += "<td>User Name : </td><td> HAi </td>";
            mail.Body += "</tr>";

            mail.Body += "<tr>";
            mail.Body += "<td>Password : </td><td>aaaaaaaaaa</td>";
            mail.Body += "</tr>";

            mail.Body += "</table>";
            mail.Body += "</body>";
            mail.Body += "</html>";

            mail.IsBodyHtml = true;
            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("sendfrommailaddress.com", "password");
            SmtpServer.EnableSsl = true;

            SmtpServer.Send(mail);

आप इसे मेल भेजने में पुनः प्राप्त कर सकते हैं


1

यदि यह एक नया Google खाता है, तो आपको नियमित उपयोगकर्ता इंटरफ़ेस के माध्यम से एक ईमेल (पहले वाला) भेजना होगा। उसके बाद आप संदेश भेजने के लिए अपने एप्लिकेशन / रोबोट का उपयोग कर सकते हैं।


1

आपको कॉन्फ़िगरेशन फ़ाइल में SMTP कॉन्फ़िगरेशन डेटा निर्दिष्ट करने पर विचार करना चाहिए और उन्हें एक कोड में अधिलेखित नहीं करना चाहिए - http://www.systemnetmail.com/faq/4.1.aspx पर SMTP कॉन्फ़िगरेशन डेटा देखें

<system.net>
            <mailSettings>
                <smtp deliveryMethod="Network" from="admin@example.com">
                    <network defaultCredentials="false" host="smtp.example.com" port="25" userName="admin@example.com" password="password"/>
                </smtp>
            </mailSettings>
        </system.net>

1

मैंने कई बार एक ही समस्या का सामना किया है। कम सुरक्षित एप्लिकेशन विकल्प को सक्षम करने के बाद समस्या हल हो गई। यहां से कम सुरक्षित एप्लिकेशन सक्षम करें: https://myaccount.google.com/lesssecureapps

आशा है कि यह मदद करेगा।


1

यदि आप एक परीक्षण के माहौल में हैं और सुरक्षा सेटिंग्स सेट नहीं करना चाहते हैं तो आपको कम सुरक्षित ऐप्स के माध्यम से अनुमति देनी होगी। जीमेल में यह लिंक।

https://myaccount.google.com/lesssecureapps


0

कुछ smtp सर्वर (सुरक्षित वाले) के लिए आपको उपयोगकर्ता नाम और ईमेल दोनों की आपूर्ति करने की आवश्यकता होती है, यदि इसका gmail तब सबसे अधिक संभावना है कि 'कम सुरक्षित साइन-इन' समस्या को आपको संबोधित करने की आवश्यकता है, अन्यथा आप कोशिश कर सकते हैं:

public static void SendEmail(string address, string subject, 
    string message, string email, string username, string password, 
    string smtp, int port)
{
    var loginInfo = new NetworkCredential(username, password);
    var msg = new MailMessage();
    var smtpClient = new SmtpClient(smtp, port);

    msg.From = new MailAddress(email);
    msg.To.Add(new MailAddress(address));
    msg.Subject = subject;
    msg.Body = message;
    msg.IsBodyHtml = true;

    smtpClient.EnableSsl = true;
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = loginInfo;
    smtpClient.Send(msg);
}

ध्यान दें कि ईमेल और उपयोगकर्ता नाम कुछ कार्यान्वयन के विपरीत भिन्न हैं जो उन्हें समान रूप से संदर्भित करता है।

इस तरीके से कॉलिंग की जा सकती है:

SendEmail("to-mail@gmail.com", "test", "Hi it worked!!", 
   "from-mail", "from-username", "from-password", "smtp", 587);

0

कम सुरक्षित विकल्प को चालू करने और अन्य समाधानों की कोशिश करने के बाद , यदि आप अभी भी उसी समस्या का सामना कर रहे हैं तो इस अधिभार का उपयोग करने का प्रयास करें:

client.Credentials = new NetworkCredential("mymailid", "mypassword");

के बजाय:

client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com");

0

मैंने आज सुबह Microsoft 365 डेवलपर सदस्यता (E5) बनाई और इसका उपयोग निम्नलिखित सेटिंग्स का उपयोग करके एक परीक्षण ईमेल भेजने के लिए किया

using (SmtpClient client = new SmtpClient())
{
    client.EnableSsl = true;
    client.UseDefaultCredentials = false;
    client.Credentials = new NetworkCredential(username, password);
    client.Host = "smtp.office365.com";
    client.Port = 587;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;

    client.Send(msg);
}

यह शुरुआत में काम नहीं आया, क्योंकि मुझे यह त्रुटि संदेश इस कोड द्वारा फेंके गए अपवाद के साथ मिलता रहा। फिर, मैंने लगभग 365+ Microsoft 365 व्यवस्थापन केंद्र सेटिंग्स के साथ खेलने और लेख पढ़ने के लिए समस्या का पता लगाने में बिताया। अंततः मैंने अपना Microsoft 365 व्यवस्थापक केंद्र पासवर्ड बदल दिया और इसने एक आकर्षण की तरह काम किया। इसलिए, किसी भी अग्रिम समाधान के बारे में सोचने से पहले, जब आपको यह संदेश मिलता है, तो पासवर्ड बदलने का प्रयास करना लायक है।

ध्यान दें कि पासवर्ड बिना किसी समस्या के मेरे Microsoft 365 खाते में लॉग इन होने पर सुनिश्चित करने के लिए अमान्य था। हालाँकि, पासवर्ड परिवर्तन से समस्या हल हो गई।


-1

मुझे इस समस्या का भी सामना करना पड़ रहा था जैसे 'एसएमटीपी सर्वर को एक सुरक्षित कनेक्शन की आवश्यकता होती है या क्लाइंट को प्रमाणित नहीं किया गया था। सर्वर रिस्पांस था: 5.5.0 ऑथेंटिकेशन रिक्वायर्ड 'तो इतनी इंटरनेट सामग्रियों से गुजरा लेकिन इसने मेरी पूरी मदद नहीं की। मैंने इसे कैसे हल किया

step1: smtp.gmail.com gmail सर्वर है इसलिए अपने खाते में जाएं gmail सेटिंग्स-> सभी सेटिंग्स देखें पर क्लिक करें-> फ़ॉरवर्डिंग और IMAP / POP-> चेक पॉप और इमैप सक्षम है, यदि इसे सक्षम नहीं किया गया-> परिवर्तन सहेजें। step2- अपने जीमेल प्रोफाइल पिक्चर पर क्लिक करें-> अपने गूगल अकाउंट को मैनेज करें पर क्लिक करें-> सिक्योरिटी टैब पर जाएं-> कम सिक्योर एप्स तक पहुंच की जांच करें (यह विकल्प उपलब्ध होगा यदि आप दो स्टेप वेरिफिकेशन का विकल्प चुनते हैं) -> डिफ़ॉल्ट रूप से Google इसे अक्षम के रूप में सेट करेगा, इसे ईमेल भेजने के लिए काम करने वाले अपने वास्तविक जीमेल पासवर्ड का उपयोग करने में सक्षम बनाता है। नोट: कम सुरक्षित ऐप्स के लिए जीमेल एक्सेस को सक्षम करना आपके लिए खतरनाक हो सकता है, इसलिए मैं इसकी सलाह नहीं देता

चरण 3:-यदि आपके खाते में दो चरण सत्यापन सक्षम हैं या ऐप विशिष्ट पासवर्ड का उपयोग करके अपने gmail रियल पासवर्ड के अलावा अन्य पासवर्ड का उपयोग करना चाहते हैं, तो यह प्रयास करें: - अपने gmail प्रोफ़ाइल चित्र पर क्लिक करें-> अपने Google खाते का प्रबंधन करें पर क्लिक करें-> सुरक्षा पर जाएं टैब-> APP PASSWORD के लिए खोजें-> दिए गए किसी भी ऐप का नाम चुनें-> किसी भी डिवाइस का नाम चुनें-> जेनरेट पर क्लिक करें-> 16 अंकों के पासवर्ड की कॉपी करें और इसे अपने ऐप में पेस्ट करें जहां आपको एक जीमेल पासवर्ड डालना है आपका असली जीमेल पासवर्ड।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.