it-swarm.asia

خطأ Gmail: يتطلب خادم SMTP اتصالًا آمنًا أو لم تتم مصادقة العميل. استجابة الخادم كانت: 5.5.1 المصادقة مطلوبة

أنا أستخدم الكود التالي لإرسال البريد الإلكتروني. يعمل الرمز بشكل صحيح في الجهاز المحلي الخاص بي. ولكن على خادم الإنتاج أحصل على رسالة الخطأ

        var fromAddress = new MailAddress("[email protected]");
        var fromPassword = "xxxxxx";
        var toAddress = new MailAddress("[email protected]");

        string subject = "subject";
        string body = "body";

        System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
        {
            Host = "smtp.gmail.com",
            Port = 587,
            EnableSsl = true,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential(fromAddress.Address, fromPassword)

        };

        using (var message = new MailMessage(fromAddress, toAddress)
        {
            Subject = subject,
            Body = body
        })


        smtp.Send(message);

وعلى Gmail A/c ، تلقيت رسالة البريد الإلكتروني التالية بعد تشغيل الرمز من خادم الإنتاج

مرحبا ،

استخدم شخص ما كلمة المرور مؤخرًا لمحاولة تسجيل الدخول إلى حساب Google الخاص بك [email protected] كان هذا الشخص يستخدم تطبيقًا مثل البريد الإلكتروني أو العميل أو الجهاز المحمول.

لقد منعنا محاولة تسجيل الدخول في حالة محاولة الخاطف الوصول إلى حسابك. الرجاء مراجعة تفاصيل محاولة تسجيل الدخول:

الجمعة ، 3 يناير 2014 13:56:08 الساعة UTC عنوان IP: xxx.xx.xx.xxx (abcd.net.) الموقع: Philadelphia PA ، Philadelphia ، PA ، الولايات المتحدة الأمريكية

إذا لم تتعرف على محاولة تسجيل الدخول هذه ، فقد يحاول شخص آخر الوصول إلى حسابك. يجب عليك تسجيل الدخول إلى حسابك وإعادة تعيين كلمة المرور الخاصة بك على الفور.

إعادة تعيين كلمة المرور

إذا كنت أنت وأنت تواجه مشكلة في الوصول إلى حسابك ، فاستكمل خطوات تحري الخلل وإصلاحه الواردة في http://support.google.com/mail؟p=client_login

مع خالص تحياتك ، فريق حسابات Google

218
vcs

يحدث هذا عمومًا عند محاولة تسجيل الدخول من منطقة زمنية مختلفة أو كمبيوتر عنوان IP. يوجد خادم الإنتاج ومعرف البريد الذي استخدمته في منطقة زمنية مختلفة. اختر أيًا من هذين الحلين:

1) قم بتسجيل الدخول إلى خادم الإنتاج عبر الوصول عن بُعد ، وقم بتسجيل الدخول إلى gmail مرة واحدة باستخدام بيانات اعتمادك. سوف يطلبون التأكيد ، تأكيده وتسجيل الخروج.

أو 2) تسجيل الدخول gmail إلى جهاز الكمبيوتر المحلي الخاص بك ، اتبع هذا رابط واختر راجع هذا النشاط واتخاذ الإجراءات المناسبة.

169
Arshad

عند محاولة إرسال بريد من التعليمات البرمجية وتجد الخطأ "يتطلب خادم SMTP اتصالًا آمنًا أو لم تتم مصادقة العميل. استجابة الخادم كانت: 5.5.1 المصادقة مطلوبة" ، مما قد يحدث الخطأ بسبب الحالات التالية.

الحالة 1: عندما تكون كلمة المرور خاطئة

الحالة 2: عند محاولة تسجيل الدخول من بعض التطبيقات

الحالة 3: عند محاولة تسجيل الدخول من المجال بخلاف منطقتك الزمنية/المجال/الكمبيوتر (هذه هي الحالة في معظم السيناريوهات عند إرسال بريد من الرمز)} _

هناك حل لكل

حل للحالة 1: أدخل كلمة المرور الصحيحة.

الحل 1 للحالة 2 : انتقل إلى إعدادات الأمان على الرابط التالي https://www.google.com/settings/security/lesssecureapps وتمكين التطبيقات الأقل أمانًا . حتى تتمكن من تسجيل الدخول من جميع التطبيقات.

الحل 2 للحالة 2 :( انظر https://stackoverflow.com/a/9572958/52277 ) تمكين المصادقة ثنائية العامل (ويعرف أيضًا باسم التحقق بخطوتين) ، ثم قم بإنشاء تطبيق كلمة المرور الخاصة. استخدم كلمة المرور التي تم إنشاؤها حديثًا للمصادقة عبر SMTP.

الحل 1 للحالة 3: (قد يكون هذا مفيدًا) تحتاج إلى مراجعة النشاط. لكن مراجعة النشاط لن تكون مفيدة نظرًا لأحدث معايير الأمان ، فإن الرابط لن يكون مفيدًا. لذا جرب الحالة أدناه.

الحل 2 للحالة 3 : إذا كنت قد قمت باستضافة الكود الخاص بك في مكان ما على خادم الإنتاج وإذا كان لديك حق الوصول إلى خادم الإنتاج ، فاحصل على اتصال سطح المكتب البعيد بخادم الإنتاج وحاول تسجيل الدخول مرة واحدة من مستعرض خادم الإنتاج. سيؤدي ذلك إلى إضافة excpetioon لتسجيل الدخول إلى google وسيُسمح لك بتسجيل الدخول من الرمز.

ولكن ماذا لو لم تتمكن من الوصول إلى خادم الإنتاج.جرب الحل 3

الحل 3 للحالة 3:عليك تمكين تسجيل الدخول من منطقة زمنية أخرى/ip لحساب google الخاص بك.

للقيام بذلك ، اتبع الرابط https://g.co/allowaccess والسماح بالوصول بالنقر فوق الزر "متابعة".

وهذا كل شيء. ها أنت ذا. الآن سوف تكون قادرًا على تسجيل الدخول من أي جهاز كمبيوتر وأي وسيلة تطبيق إلى حساب google الخاص بك.

244
Roshan Parmar

في مشكلة أمنية ، Gmail بشكل افتراضي يمنع الوصول إلى حساب البريد الإلكتروني الخاص بك من التطبيقات المخصصة. يمكنك إعداده لقبول تسجيل الدخول من التطبيق الخاص بك.

بعد تسجيل الدخول إلى بريدك الإلكتروني ، انقر هنا

سينقلك هذا إلى الصفحة التالية

 Less Secure Apps Page

95
Sayka

بعد قضاء ساعتين اليوم في تجربة كل حل هنا ، ما زلت غير قادر على تجاوز هذا الخطأ بالضبط. لقد استخدمت gmail عدة مرات بهذه الطريقة لذلك كنت أعرف أنه شيء غبي ، لكن لا شيء قمت به لحل المشكلة. تعثرت أخيرًا على الحل في حالتي ، لذا اعتقدت أنني سأشاركه.

أولاً ، معظم الإجابات المذكورة أعلاه مطلوبة أيضًا ، ولكن في حالتي ، كانت مسألة ترتيب الكود بسيطة عند إنشاء فئة SmtpClient.

في مقتطف الشفرة الأول أدناه ، لاحظ مكان سطر "بيانات الاعتماد = الأرصدة". سيقوم هذا التطبيق بإنشاء الخطأ المشار إليه في هذا السؤال حتى إذا كان لديك كل شيء آخر تم إعداده بشكل صحيح.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
        {
            Host = Emailer.Host,
            Port = Emailer.Port,
            Credentials = creds,
            EnableSsl = Emailer.RequireSSL,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
        }

ومع ذلك ، إذا قمت بنقل مكالمة تعيين مؤهلات اعتماد إلى أسفل ، فسيتم إرسال البريد الإلكتروني دون خطأ. لم أجري أي تغييرات على الكود المحيط ... أي ... اسم المستخدم/كلمة المرور ، إلخ. بشكل واضح ، إما أن EnableSSL أو UseDefaultCredentials أو DeliveryMethod تعتمد على مؤهلات الاعتماد التي تم تعيينها أولاً .... لم أختبر جميع لمعرفة أي واحد كان على الرغم من.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
        {
            Host = Emailer.Host,
            Port = Emailer.Port,
            EnableSsl = Emailer.RequireSSL,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            Credentials = creds
        }

آمل أن يساعد هذا في إنقاذ شخص آخر بعض الصداع في المستقبل.

18
user1011627

مرحباً ، كان لي نفس المشكلة ،

ماذا فعلت لحلها. هو تشغيل التطبيق الأقل أمانًا. بعد الاتصال بحساب gmail الخاص بي. لقد أدخلت هذا الرابط: https://www.google.com/settings/security/lesssecureapps

ثم أقوم بتشغيل التطبيق الآمن و نجحت. لقد قيل أعلاه أيضا

12
Barak Rosenfeld

لديّ كود يعمل سابقًا يلقي هذا الخطأ الآن. لا مشكلة في كلمة المرور. لا حاجة لتحويل الرسالة إلى base64 سواء. اتضح ، أنا بحاجة إلى القيام بما يلي:

  1. قم بإيقاف تشغيل المصادقة الثنائية
  2. اضبط "السماح للتطبيقات الأقل أمانًا" على ON
  3. تسجيل الدخول إلى حساب جوجل الخاص بك من خادم الإنتاج
  4. اذهب هنا كذلك للموافقة على نشاط تسجيل الدخول
  5. قم بتشغيل التطبيق الخاص بك في خادم الإنتاج

رمز العمل

    public static void SendEmail(string emailTo, string subject, string body)
    {
        var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("[email protected]", "secretpassword"),
            EnableSsl = true
        };

        client.Send("[email protected]", emailTo, subject, body);
    }

إيقاف تشغيل المصادقة الثنائية  Turning off 2-factor authentication

اضبط "السماح للتطبيقات الأقل أمانًا" على "تشغيل" (نفس الصفحة ، تحتاج إلى التمرير إلى الأسفل)  Allow less secure apps

8
Jeson Martajaya

ما عليك سوى اتباع الخطوة في البريد الإلكتروني على google وتمكين التطبيقات الأقل أمانًا.

8
Trung

تحتاج إلى تشغيل "السماح للتطبيقات الأقل أمانًا" من هنا https://myaccount.google.com/lesssecureapps

6
Raj K

لقد واجهت نفس المشكلة. يحدث ذلك عند تشغيل التحقق بخطوتين (MFA). فقط قم بإيقاف تشغيل التحقق من الخطوة الثانية وينبغي حل مشكلتك.

6
Anik

فيما يلي الكود الخاص بي. لقد كان لدي نفس الخطأ أيضًا ، لكن المشكلة كانت أنني أعطيت كلمة المرور الخاصة بي بشكل خاطئ.

            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");             
            mail.From = new MailAddress("[email protected]");
            mail.To.Add("[email protected]");
            mail.To.Add("[email protected]");
            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);

يمكنك إحالته في مدونتي

4
Ganesh Pillai N

فقط قم بتشغيل الإعداد أو gmail. انظر أدناه صورة معينة:

 enter image description here

3
Rajesh Paliwal

ما كان يعمل بالنسبة لي هو تنشيط الخيار للتطبيقات الأقل أمانًا (أنا أستخدم VB.NET)

Public Shared Sub enviaDB(ByRef body As String, ByRef file_location As String)
        Dim mail As New MailMessage()
        Dim SmtpServer As New SmtpClient("smtp.gmail.com")
        mail.From = New MailAddress("[email protected]")
        mail.[To].Add("[email protected]")
        mail.Subject = "subject"
        mail.Body = body
        Dim attachment As System.Net.Mail.Attachment
        attachment = New System.Net.Mail.Attachment(file_location)
        mail.Attachments.Add(attachment)
        SmtpServer.Port = 587
        SmtpServer.Credentials = New System.Net.NetworkCredential("user", "password")
        SmtpServer.EnableSsl = True
        SmtpServer.Send(mail)
    End Sub

لذا ، سجّل الدخول إلى حسابك ، ثم انتقل إلى google.com/settings/security/lesssecureapps

2
Edgar

واجهت نفس المشكلة في تطبيق تم نشره على Microsoft Azure.

SmtpException: يتطلب خادم SMTP اتصالًا آمنًا أو لم تتم مصادقة العميل. استجابة الخادم كانت: 5.5.1 المصادقة مطلوبة.

أولاً ، وافقت على جميع الأجهزة غير المعروفة (بعض عناوين بروتوكول الإنترنت التي تنشأ من أيرلندا) على الصفحة التالية (تم تسجيل الدخول كمستخدم gmail): https://security.google.com/settings/u/1/security/secureaccount

لقد استخدمت الإعدادات التالية للعميل:

var client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "my_password"); 

بدأ العمل فقط بعد أن قمت بتعيين الخاصية التالية على عميل SMTP:

client.TargetName = "STARTTLS/smtp.gmail.com";
2
haiiaaa

جربت جميع الاقتراحات الموجودة هنا ، من تمكين التطبيقات الأقل أمانًا ، إلى تجربة المنفذ 587 ... لم ينجح شيء. أخيرًا ، علقت للتو على السطر UseDefaultCredentials = false. كل شيء يعمل إذا لم أتطرق لذلك المنطقية.

1
Kris Coleman

نوفمبر 2018 ، جرب كل شيء أعلاه دون نجاح.

أدناه هو الحل الذي نجح في النهاية. لسوء الحظ ، لا تستخدم SSL ، لكنها تعمل !!!

var fromAddress = new MailAddress([email protected], "From Name");
var toAddress = new MailAddress("[email protected]", "To Name");

const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "aspmx.l.google.com",
    Port = 25,
    EnableSsl = false
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}
1
InGeek

تعليق من Tomasz Madeyski هو الذي أصلح مشكلتي ... يقول أنه يوجد خطأ في SetDefaultCredential ، يقول:

"المشكلة هي أنه في أداة ضبط UseDefaultCredentials ، يوجد هذا الكود: this.transport.Credentials = value؟ (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null ؛ الذي يتخطى بيانات الاعتماد التي تم تعيينها بواسطة محدد بيانات الاعتماد.

إذا وضعت smtpClient.UseDefaultCredentials = false بعد تعيين بيانات الاعتماد ... فسيتم تعيين هذا السطر لإلغاء بيانات الاعتماد هذه ...

1
FabianSilva

قد تحتاج إلى إنشاء/إنشاء كلمة مرور APP محددة من gmail. ستستخدم التطبيق أو البرنامج النصي كلمة المرور الجديدة هذه بدلاً من كلمة المرور العادية. ستظل كلمة مرورك العادية صالحة لك.

هذا ما فعله لي. ما زلت أستخدم نفس حساب البريد الإلكتروني ولكن كان علي إنشاء كلمة مرور خاصة بالتطبيق الجديد.

https://support.google.com/accounts/answer/185833؟hl=ar

 Screen shot

يمكنك القيام بذلك بشكل أساسي هنا: https://security.google.com/settings/security/apppasswords

0
samiup

يجب عليك عدم السماح للتطبيقات الأقل أمانًا بالوصول إلى حساب google الخاص بك .

لكى يفعل:

https://myaccount.google.com/lesssecureapps

0
MohammadSoori

لقد نظرت حقًا إلى الكثير من الأفكار ، والحل الوحيد هو بهذه الطريقة (يعمل مع مزودي خدمات بريد إلكتروني مختلفين):

            try
        {
            ViewProgressbar("Try to connect mail-server...", progressBar1.Value = 20);
            string Host = dsProvider.Rows[y]["POP_hostOut"].ToString();
            int port = int.Parse(dsProvider.Rows[y]["POP_portOut"].ToString());  //587
            string[] email = von1.Split('@');
            string userName = (dsProvider.Rows[y]["login"].ToString() == "email[0]@email[1]")? email[0]+"@"+email[1] : email[0];
            string password = layer.getUserPassword(listSender.SelectedValue.ToString());
            SmtpClient client = new SmtpClient(Host, port);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            //A idea from MSDN but it not works. You got the "The server response was: 5.5.1 Authentication Required."
            //System.Net.NetworkCredential myCreds = new System.Net.NetworkCredential(userName, password, Host);
            //System.Net.CredentialCache cache = new System.Net.CredentialCache();
            //cache.Add(Host, port, "NTLM", myCreds);
            ///cache.GetCredential(Host, port, "NTLM");   //NTLM
            client.Credentials = new System.Net.NetworkCredential(userName, password);
            client.Host = Host;
            client.Port = port;
            client.EnableSsl = true;
            client.Send(message);
            ViewProgressbar();
        }
        catch (SmtpException ex)...
0
Walter

إذا كنت تستخدم جوجل.

  • 1-تسجيل الدخول إلى حسابك

    2- تصفح هذا الرابط

    3- السماح للتطبيقات الأقل أمانًا: ON

استمتع....

0
Muhammad Azeem

أنا أحد تطبيقات google لمشتركي الأعمال وأقضي الساعات القليلة الماضية فقط في التعامل مع هذا ، حتى بعد امتلاك جميع الإعدادات الصحيحة (smtp ، port ، enableSSL ، إلخ). إليك ما نجح بالنسبة لي ومواقع الويب التي كانت ترمي الخطأ 5.5.1 عند محاولة إرسال بريد إلكتروني:

  1. تسجيل الدخول إلى admin.google.com
  2. انقر فوق SECURITY <- إذا لم يكن هذا مرئيًا ، فانقر فوق "المزيد من الضوابط" ، وأضفه من القائمة
  3. انقر فوق الإعدادات الأساسية
  4. قم بالتمرير إلى أسفل مربع "الإعدادات الأساسية" ، انقر فوق الارتباط: "انتقل إلى الإعدادات للتطبيقات الأقل أمانًا"
  5. حدد الخيار رقم 3: فرض الوصول إلى التطبيقات الأقل أمانًا لجميع المستخدمين (غير مستحسن)
  6. اضغط على حفظ في أسفل النافذة

بعد القيام بذلك ، كانت نماذج البريد الإلكتروني الخاصة بي من الموقع تعمل مرة أخرى. حظا سعيدا!

0
RichieMN

لا تضع نقطة توقف قبل انتظار smtp.SendMailAsync (البريد) ؛

:)

عندما تنتظر مع نقطة فاصل إعطاء هذا الخطأ عند إزالة نقطة فاصل أنها عملت

0
dewelloper