سؤال

حسنًا، لقد كنت أستخدم البرنامج النصي التالي منذ أكثر من عام لإرسال بريد إلكتروني (عبر gmail) من مضيفي، وقد نجح الأمر بشكل جيد (البرنامج الإعدادات.الحصول على () فقط قم بإرجاع السلاسل):

public class Email : SmtpClient
{
    public MailMessage Message { get; private set; }

    public Email(string to, string from, string subject, string body) : base(Settings.Get("smtp"), 25)
    {
        this.EnableSsl = Convert.ToBoolean(Settings.Get("ssl"));
        if(this.EnableSsl)
            this.Credentials = new System.Net.NetworkCredential(Settings.Get("gm"), Settings.Get("gmp"));
        this.Message = new MailMessage(from, to, subject, body);
    }

    public void Send()
    {
        try { this.Send(Message); }
        catch (Exception ex) { throw ex; }
    }
}

ولكن منذ الأمس وأنا أتلقى هذا الخطأ:

خطأ:الخادم لا يدعم الاتصالات الآمنة.

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

شكرًا لك...هذا يقودني للجنون!

هل كانت مفيدة؟

المحلول

ما هو خادم SMTP والمنفذ الذي تستخدمه؟ستحتاج إلى استخدام المنفذ 465 أو 587 إذا كنت تتصل مباشرة بـ smtp.gmail.com لإرسال بريد SSL.

يبدو أنك تستخدم المنفذ 25، هل أنت متأكد من ذلك؟ Settings.Get("ssl") يعود كاذبة؟

اقرأ هنا للحصول على التفاصيل.

نصائح أخرى

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

إن تحديد المنفذ لاستخدام 587 قد أدى أيضًا إلى حل هذه المشكلة بالنسبة لي -

خطأ:الخادم لا يدعم الاتصالات الآمنة.

قامت الشركة التي أعمل بها بإنشاء خدمة Windows التي تقوم ببعض الأشياء ثم ترسل بريدًا إلكترونيًا من Gmail.في البداية أرسل البريد الإلكتروني بشكل جيد دون أي مشاكل.بعد تثبيت الخدمة على جهاز يعمل بنظام التشغيل Vista لاحظنا أنها لن ترسل البريد الإلكتروني.ثم نفس الشيء بمجرد تثبيته على خادم ويندوز 2008.لقد بدأنا نلاحظ ذلك بعدد صغير من أجهزة XP.بمجرد أن قمنا بتغيير المنفذ إلى 587، بدأ العمل بشكل جيد مرة أخرى وإرسال رسائل البريد الإلكتروني.

فيما يلي بعض نماذج التعليمات البرمجية التي عملت على جميع الأجهزة التي جربناها (XP، Vista، Server 2008).

        Dim client As New Net.Mail.SmtpClient("smtp.gmail.com")
        client.Port = 587
        client.EnableSsl = True
        client.UseDefaultCredentials = False
        client.Credentials = loginInfo
        client.Send(mm)
SmtpServer.Port = 587;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("xx@xx.com", "password");
SmtpServer.EnableSsl = true;

يتغير:

 SmtpServer.EnableSsl = true;

ل:

SmtpServer.EnableSsl = false;

هذا سوف يفرز المشكلة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top