ข้อผิดพลาดของ Gmail: เซิร์ฟเวอร์ SMTP ต้องการการเชื่อมต่อที่ปลอดภัยหรือไม่ได้รับการรับรองความถูกต้องของไคลเอ็นต์ การตอบกลับของเซิร์ฟเวอร์คือ: 5.5.1 ต้องมีการตรวจสอบสิทธิ์


260

ฉันใช้รหัสต่อไปนี้เพื่อส่งอีเมล รหัสทำงานอย่างถูกต้องในเครื่องท้องถิ่นของฉัน แต่ในเซิร์ฟเวอร์การผลิตฉันได้รับข้อความแสดงข้อผิดพลาด

var fromAddress = new MailAddress("mymailid@gmail.com");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("yourmailid@yourdoamain.com");

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);

และใน A / C Gmail ของฉันฉันได้รับอีเมลต่อไปนี้หลังจากฉันเรียกใช้รหัสจากเซิร์ฟเวอร์ที่ใช้งานจริง

หวัดดี

มีคนเพิ่งใช้รหัสผ่านของคุณเพื่อลองลงชื่อเข้าใช้บัญชี Google ของคุณ mymailid@gmail.com บุคคลนี้กำลังใช้งานแอปพลิเคชันเช่นอีเมลไคลเอ็นต์หรืออุปกรณ์มือถือ

เราป้องกันความพยายามในการลงชื่อเข้าใช้ในกรณีที่นักจี้ที่พยายามเข้าถึงบัญชีของคุณ โปรดตรวจสอบรายละเอียดของความพยายามในการลงชื่อเข้าใช้:

วันศุกร์ที่ 3 มกราคม 2014 13:56:08 น. UTC UTC ที่อยู่ IP: xxx.xx.xx.xxx (abcd.net.) ที่ตั้ง: Philadelphia PA, Philadelphia, PA, USA

หากคุณไม่รู้จักการพยายามลงชื่อเข้าใช้นี้อาจมีบุคคลอื่นกำลังพยายามเข้าถึงบัญชีของคุณ คุณควรลงชื่อเข้าใช้บัญชีของคุณและรีเซ็ตรหัสผ่านทันที

รีเซ็ตรหัสผ่าน

หากนี่คือคุณและคุณมีปัญหาในการเข้าถึงบัญชีของคุณให้ทำตามขั้นตอนการแก้ไขปัญหาที่ระบุไว้ใน http://support.google.com/mail?p=client_login

ขอแสดงความนับถือทีมงานบัญชี Google


คุณมีสิทธิ์เข้าถึงเซิร์ฟเวอร์ที่ใช้งานจริงหรือไม่
Arshad

ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ที่ใช้งานได้
vcs

ปิดการยืนยันแบบสองขั้นตอน ..
Mangesh


1
นอกจากนี้ตรวจสอบให้แน่ใจว่า google "Captcha" ถูกปิดใช้งานซึ่งอาจจำเป็นถ้าคุณใช้งานสคริปต์บนเซิร์ฟเวอร์ระยะไกล (ไม่จำเป็นเมื่อทำงานบนเครื่องท้องถิ่น): accounts.google.com/DisplayUnlockCaptcha
Jens

คำตอบ:


197

สิ่งนี้มักจะเกิดขึ้นเมื่อคุณลองเข้าสู่ระบบจากเขตเวลาหรือคอมพิวเตอร์ที่อยู่ IP อื่น เซิร์ฟเวอร์ที่ใช้งานจริงและรหัสอีเมลที่คุณใช้ทั้งสองอยู่ในเขตเวลาที่ต่างกัน เลือกหนึ่งในสองวิธีต่อไปนี้:

1) ลงชื่อเข้าใช้เซิร์ฟเวอร์การผลิตผ่านการเข้าถึงระยะไกลและลงชื่อเข้าใช้ gmail เพียงครั้งเดียวด้วยข้อมูลประจำตัวของคุณ พวกเขาจะขอคำยืนยันยืนยันและออกจากระบบ

หรือ 2) เข้าสู่ระบบ gmail ลงในคอมพิวเตอร์ของคุณตามลิงค์นี้และเลือกตรวจสอบกิจกรรมนี้และดำเนินการที่เหมาะสม


21
ความคิดเห็นเล็กน้อย: ไปที่security.google.com/settings/security/activityและที่นี่คุณจะเห็นการเชื่อมต่อที่ถูกบล็อกจากรหัสของคุณ อนุญาตให้พวกเขาและมันจะช่วยในกรณีนี้
Alex Zhukovskiy

68
สิ่งนี้จะช่วยได้มาก: google.com/settings/security/lesssecureapps
George

ใช่เหตุผลคือการยืนยันแบบเปิดได้ 2 ขั้นตอนสำหรับบัญชี gmail เลือกแอป / อุปกรณ์แล้วคลิกปุ่มสร้างsupport.google.com/accounts/answer/185833
smily


8
นอกจากนี้ตรวจสอบให้แน่ใจว่า google "Captcha" ถูกปิดใช้งานซึ่งอาจจำเป็นถ้าคุณใช้งานสคริปต์บนเซิร์ฟเวอร์ระยะไกล (ไม่จำเป็นเมื่อเรียกใช้บนเครื่องท้องถิ่น): accounts.google.com/DisplayUnlockCaptcha
Jens

301

เมื่อคุณพยายามส่งจดหมายจากรหัสและคุณพบข้อผิดพลาด "เซิร์ฟเวอร์ SMTP ต้องการการเชื่อมต่อที่ปลอดภัยหรือลูกค้าไม่ได้รับการรับรองความถูกต้องการตอบสนองของเซิร์ฟเวอร์คือ: 5.5.1 ต้องมีการตรวจสอบสิทธิ์" เนื่องจากข้อผิดพลาดอาจเกิดขึ้น

กรณีที่ 1:เมื่อรหัสผ่านไม่ถูกต้อง

กรณีที่ 2:เมื่อคุณพยายามลงชื่อเข้าใช้จากแอพบางแอป

กรณีที่ 3:เมื่อคุณพยายามลงชื่อเข้าใช้จากโดเมนอื่นนอกเหนือจากเขตเวลา / โดเมน / คอมพิวเตอร์ของคุณ (นี่เป็นกรณีในสถานการณ์ส่วนใหญ่เมื่อส่งอีเมลจากรหัส)

มีทางออกสำหรับแต่ละคน

วิธีแก้ปัญหาสำหรับกรณีที่ 1:ป้อนรหัสผ่านที่ถูกต้อง

โซลูชันที่ 1 สำหรับกรณีที่ 2 : ไปที่การตั้งค่าความปลอดภัยที่ลิงค์ followig https://www.google.com/settings/security/lesssecureapps และเปิดใช้งานแอปที่ปลอดภัยน้อยลง เพื่อที่คุณจะสามารถเข้าสู่ระบบได้จากทุกแอพ

โซลูชัน 2 สำหรับกรณี 2 : (ดู https://stackoverflow.com/a/9572958/52277 ) เปิดใช้งานการตรวจสอบสิทธิ์แบบสองปัจจัย (aka การยืนยันสองขั้นตอน) จากนั้นสร้างรหัสผ่านเฉพาะแอปพลิเคชัน ใช้รหัสผ่านที่สร้างขึ้นใหม่เพื่อรับรองความถูกต้องผ่าน SMTP

โซลูชันที่ 1 สำหรับกรณีที่ 3: (สิ่งนี้อาจมีประโยชน์) คุณต้องตรวจสอบกิจกรรม แต่การตรวจสอบกิจกรรมจะไม่เป็นประโยชน์เนื่องจากมาตรฐานความปลอดภัยล่าสุดลิงก์จะไม่เป็นประโยชน์ ดังนั้นลองกรณีด้านล่าง

โซลูชันที่ 2 สำหรับกรณีที่ 3 : หากคุณโฮสต์รหัสของคุณไว้ที่ใดที่หนึ่งบนเซิร์ฟเวอร์ที่ใช้งานจริงและหากคุณสามารถเข้าถึงเซิร์ฟเวอร์ที่ใช้งานจริงได้ให้ทำการเชื่อมต่อเดสก์ท็อประยะไกลไปยังเซิร์ฟเวอร์ที่ใช้งานจริง สิ่งนี้จะเพิ่ม excpetioon สำหรับการเข้าสู่ระบบ google และคุณจะได้รับอนุญาตให้เข้าสู่ระบบจากรหัส

แต่ถ้าคุณไม่มีสิทธิ์เข้าถึงเซิร์ฟเวอร์ที่ใช้งานจริง ลองวิธีแก้ปัญหา 3

โซลูชัน 3 สำหรับกรณี 3:คุณต้องเปิดใช้งานการเข้าสู่ระบบจากเขตเวลาอื่น / ip สำหรับบัญชี Google ของคุณ

เพื่อทำสิ่งนี้ตามลิงค์ https://g.co/allowaccessและอนุญาตการเข้าถึงโดยคลิกที่ปุ่มดำเนินการต่อ

และนั่นคือมัน ไปเลย ตอนนี้คุณจะสามารถลงชื่อเข้าใช้จากคอมพิวเตอร์เครื่องใดก็ได้และแอพใด ๆ ไปยังบัญชี Google ของคุณ


10
โซลูชันที่ 2! คุณงามน้อย!
George Harnwell

2
lesssecureapps เชื่อมโยงดังกล่าวข้างต้นช่วย :)
Gautam เชน

ว้าวควรทำเครื่องหมายเป็นคำตอบที่ยอมรับขอบคุณ
Nic

5
ไซต์ที่โฮสต์บน Azure ต้องปฏิบัติตามโซลูชัน 3 สำหรับกรณีที่ 3: ลิงก์สุดท้ายซึ่งช่วยg.co/allowaccess
Ravi Anand

1
โซลูชันที่ 2 สำหรับกรณีที่ 3 - ทำงานได้เหมือนเสน่ห์สำหรับฉัน ขอบคุณ
ss_mj

106

มันเป็นปัญหาด้านความปลอดภัยโดยค่าเริ่มต้น Gmail ป้องกันการเข้าถึงบัญชีอีเมลของคุณจากแอปพลิเคชันที่กำหนดเอง คุณสามารถตั้งค่าให้ยอมรับการลงชื่อเข้าใช้จากแอปพลิเคชันของคุณ

หลังจากเข้าสู่ระบบอีเมลของคุณคลิกที่นี่

สิ่งนี้จะนำคุณไปยังหน้าต่อไปนี้

หน้าแอพที่ปลอดภัยน้อยลง


1
นอกจากนี้หากคุณมีโดเมนที่กำหนดเองผู้ใช้โดเมนต้องเปิดใช้งานก่อนโดยผู้ดูแลระบบโดเมนเพื่ออนุญาตการเข้าถึงแอปที่ปลอดภัยน้อยกว่า หากคุณเป็นผู้ดูแลโดเมนให้ไปที่ลิงก์ต่อไปนี้เพื่อเปิดใช้งานadmin.google.com/AdminHome#ServiceSettings/
551113

2
คำตอบนี้ดีมาก มันทำงานเหมือนจับใจ ขอบคุณ.
Thomas.Benz

24

หลังจากใช้เวลาสองสามชั่วโมงวันนี้ลองแก้ปัญหาทุกอย่างที่นี่ฉันยังคงไม่สามารถผ่านข้อผิดพลาดที่แน่นอนนี้ได้ ฉันใช้ gmail หลายครั้งด้วยวิธีนี้ฉันจึงรู้ว่ามันเป็นอะไรที่โง่ แต่ไม่มีอะไรที่ฉันสามารถแก้ไขปัญหาได้ ในที่สุดฉันก็พบวิธีแก้ปัญหาในกรณีของฉันดังนั้นคิดว่าฉันจะแบ่งปัน

ข้อแรกคำตอบส่วนใหญ่จำเป็นต้องใช้ด้วยเช่นกัน แต่ในกรณีของฉันมันเป็นเรื่องง่าย ๆ ในการสั่งรหัสในขณะที่สร้างSmtpClientคลาส

ในตัวอย่างโค้ดแรกด้านล่างนี้ให้สังเกตว่าตำแหน่งCredentials = credsนั้นอยู่ที่ใด การใช้งานนี้จะสร้างข้อผิดพลาดที่อ้างอิงในคำถามนี้แม้ว่าคุณจะมีทุกอย่างที่ตั้งค่าไว้อย่างถูกต้อง

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, or the DeliveryMethodขึ้นอยู่กับCredentialsการตั้งค่าเป็นอันดับแรก ... ฉันไม่ได้ทดสอบทั้งหมดเพื่อหาว่าเป็นแบบไหน .

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
}

หวังว่าสิ่งนี้จะช่วยให้คนอื่นปวดหัวบ้างในอนาคต


2
ในกรณีของฉันฉันมีปัญหาเช่นเดียวกับคุณจัดลำดับรหัสใหม่เพื่อให้ข้อมูลรับรองมาใช้งานได้ล่าสุดสำหรับฉัน
Dev

1
ฉันไม่อยากจะเชื่อเลย แต่มันได้ผล! ฉันได้เปิดใช้งาน 2 ขั้นตอนเนื่องจากไม่ต้องการเปิดใช้งานการตั้งค่าสถานะที่ปลอดภัยน้อยลง แต่จนกว่าฉันจะใส่ข้อมูลรับรองล่าสุดก่อนส่งไม่ต้องการทำงาน ! เหลือเชื่อ
Čikić Nenad

6
ปัญหาก็คือว่าในUseDefaultCredentialsหมามีรหัสนี้this.transport.Credentials = value ? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials : (ICredentialsByHost) null;ซึ่งแทนที่credentialsกำหนดโดยCredentialsหมา สำหรับฉันดูเหมือนว่าSmtpClientข้อผิดพลาด
Tomasz Madeyski

@TomaszMadeyski นี้จะต้องมีคำตอบแทนความคิดเห็น! นั่นคือปัญหาของฉัน ... วิธีที่นรกฉันสามารถคิดว่าถ้าฉันตั้งค่าข้อมูลประจำตัวในคอนสตรัคแล้วกำหนดเป็นค่าเท็จอีกครั้ง UseDefaultCredentials = false มันจะแทนที่ข้อมูลประจำตัว ... บ้า !! แต่นั่นเกิดขึ้น .... ขอบคุณ youuuuu
FabianSilva


12

สวัสดีฉันมีปัญหาเดียวกัน

สิ่งที่ฉันทำเพื่อแก้ไข คือการเปิดแอพที่ปลอดภัยน้อยกว่า หลังจากเชื่อมต่อกับบัญชี gmail ของฉัน ฉันเข้าสู่ลิงค์นี้: https://www.google.com/settings/security/lesssecureapps

จากนั้นฉันก็เปิดแอปที่ปลอดภัยและมันก็ใช้งานได้ มันได้รับการกล่าวยังข้างต้น


ดังนั้นความแตกต่างจากคำตอบของคุณสำหรับ คำตอบข้างต้นคืออะไร? จะได้รับคำตอบเหมือนกันก่อนวันที่ 12 ม.ค. 58 เวลา 10:36 น.
Dush

11

ฉันมีรหัสที่ใช้งานได้ก่อนหน้านี้ซึ่งส่งข้อผิดพลาดนี้ตอนนี้ ไม่มีปัญหาเกี่ยวกับรหัสผ่าน ไม่จำเป็นต้องแปลงข้อความเป็น base64 เช่นกัน ปรากฎว่าฉันต้องทำดังต่อไปนี้:

  1. ปิดการตรวจสอบสิทธิ์แบบ 2 ปัจจัย
  2. ตั้งค่า "อนุญาตแอปที่ปลอดภัยน้อย" เป็นเปิด
  3. เข้าสู่ระบบบัญชี Gmail ของคุณจากเซิร์ฟเวอร์การผลิต
  4. ไปที่นี่เช่นกันเพื่ออนุมัติกิจกรรมการเข้าสู่ระบบ
  5. เรียกใช้แอปของคุณในเซิร์ฟเวอร์ที่ใช้งานจริง

รหัสการทำงาน

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

        client.Send("youremail@gmail.com", emailTo, subject, body);
    }

ปิดการตรวจสอบสิทธิ์แบบ 2 ปัจจัย ปิดการตรวจสอบสิทธิ์แบบ 2 ปัจจัย

ตั้งค่า "อนุญาตแอพที่มีความปลอดภัยน้อย" เป็น ON (หน้าเดียวกันต้องเลื่อนไปด้านล่าง) อนุญาตแอปที่ปลอดภัยน้อยกว่า


9

เพียงทำตามขั้นตอนในอีเมล google และเปิดใช้งานแอปที่ปลอดภัยน้อยกว่า


6

ฉันประสบปัญหาเดียวกัน มันเกิดขึ้นเมื่อคุณเปิดการยืนยันแบบ 2 ขั้นตอน (MFA) เพียงปิดการยืนยันแบบ 2 ขั้นตอนและปัญหาของคุณควรได้รับการแก้ไข


ฉันไม่ได้เปิดใช้งานสองขั้นตอนสำหรับบัญชีนี้และมีปัญหานี้
ชีฟ

4

ด้านล่างเป็นรหัสของฉันฉันยังมีข้อผิดพลาดเดียวกัน แต่ปัญหาคือฉันให้รหัสผ่านของฉันผิดรหัสด้านล่างจะทำงานได้อย่างสมบูรณ์แบบ .. ลองอีกครั้ง

            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);

คุณสามารถอ้างอิงได้ในบล็อกของฉัน


ฉันใช้รหัสเดียวกันซึ่งทำงานในเครื่องท้องถิ่นของฉัน แต่มันไม่ทำงานบนเซิร์ฟเวอร์ การรับข้อผิดพลาดเซิร์ฟเวอร์ SMTP ต้องการการเชื่อมต่อที่ปลอดภัยหรือไม่ได้รับการรับรองความถูกต้อง การตอบกลับของเซิร์ฟเวอร์คือ: 5.5.1 ต้องมีการตรวจสอบสิทธิ์ .
Akshay Chawla

1
ฉันติดต่อผู้ให้บริการโฮสติ้งของฉันพวกเขากล่าวว่า: เราเห็นว่าคุณได้กำหนดค่า SMTP ส่วนที่สาม (smtp.gmail.com) ซึ่งจะไม่รองรับในสภาพแวดล้อมเซิร์ฟเวอร์ที่ใช้ร่วมกันของเรา เนื่องจากการใช้ฟังก์ชั่นเมลหรือปัญหาการส่งสแปมมีมากเกินไปจึงไม่รองรับฟังก์ชั่นเมล คุณสามารถส่งอีเมลโดยใช้ PHPMailer ซึ่งเป็นที่นิยมและใช้บ่อย แต่เว็บไซต์ของฉันสร้างใน mvc c # ดังนั้นฉันจะใช้ phpmailer ได้อย่างไร
Akshay Chawla


2

ฉันมีปัญหาเดียวกันสำหรับแอปพลิเคชันที่ปรับใช้กับ Microsoft Azure

SmtpException: เซิร์ฟเวอร์ SMTP ต้องการการเชื่อมต่อที่ปลอดภัยหรือไคลเอ็นต์ไม่ได้รับการตรวจสอบความถูกต้อง การตอบกลับของเซิร์ฟเวอร์คือ: 5.5.1 ต้องมีการตรวจสอบสิทธิ์

ก่อนอื่นฉันอนุมัติอุปกรณ์ที่ไม่รู้จักทั้งหมด (ที่อยู่ IP บางอันที่มาจากไอร์แลนด์) ในหน้าต่อไปนี้ (ลงชื่อเข้าใช้ด้วยชื่อผู้ใช้ 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("my_user_name@gmail.com", "my_password"); 

มันเริ่มทำงานหลังจากที่ฉันตั้งค่าคุณสมบัติต่อไปนี้บน smtp-client:

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

2

สิ่งที่ใช้ได้ผลสำหรับฉันคือการเปิดใช้งานตัวเลือกสำหรับแอพที่ปลอดภัยน้อยกว่า (ฉันใช้ 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("from@gmail.com")
        mail.[To].Add("to@gmail.com")
        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

ความคิดเห็นจาก Tomasz Madeyski เป็นสิ่งที่แก้ไขปัญหาของฉัน ... เขาบอกว่ามีข้อผิดพลาดใน SetDefaultCredential เขาพูดว่า:

"ปัญหาคือว่าในตัวตั้งค่า UseDefaultCredentials มีรหัสนี้: this.transport.Credentials = ค่าหรือไม่ (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) ที่เป็นโมฆะ

หากคุณใส่smtpClient.UseDefaultCredentials = falseข้อมูลประจำตัวหลังจากตั้งค่า ... บรรทัดนี้ตั้งค่าเป็นโมฆะข้อมูลรับรองเหล่านั้น ...


2

พฤศจิกายน 2018ได้ลองทุกอย่างข้างต้นแล้วไม่ประสบความสำเร็จ

ด้านล่างเป็นวิธีแก้ปัญหาที่ใช้งานได้ในที่สุด น่าเสียดายที่มันไม่ได้ใช้ SSL แต่ใช้งานได้ !!!

var fromAddress = new MailAddress(asd@asd.com, "From Name");
var toAddress = new MailAddress("tosend@asd.com", "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

ฉันลองใช้คำแนะนำทั้งหมดที่พบที่นี่ตั้งแต่เปิดใช้งานแอพที่ปลอดภัยน้อยไปจนถึงลองพอร์ต 587 ... ไม่มีอะไรทำงาน UseDefaultCredentials = falseในที่สุดผมก็เพียงแค่ออกความเห็นบรรทัด ทุกอย่างทำงานได้ถ้าฉันไม่ได้แตะต้องบูลีนนั้น


1
เหมือนกันที่นี่ .. ฉันเชื่อว่าบรรทัดเดียวใช้เวลาหนึ่งชั่วโมงจากฉัน!
Wahid Masud

0

ฉันได้ดูแนวคิดมากมายจริง ๆ แล้วทางออกเดียวคือวิธีนี้ (ใช้ได้กับผู้ให้บริการอีเมลรายอื่น):

            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

ฉันเป็นแอพ google สำหรับสมาชิกธุรกิจและฉันใช้เวลาสองสามชั่วโมงที่ผ่านมาเพียงแค่จัดการกับสิ่งนี้แม้ว่าจะมีการตั้งค่าที่ถูกต้องทั้งหมด (smtp, พอร์ต, enableSSL, ฯลฯ ) นี่คือสิ่งที่ใช้ได้ผลสำหรับฉันและเว็บไซต์ที่มีข้อผิดพลาด 5.5.1 เกิดขึ้นเมื่อพยายามส่งอีเมล:

  1. ลงชื่อเข้าใช้ admin.google.com ของคุณ
  2. คลิกความปลอดภัย <- หากมองไม่เห็นให้คลิก 'การควบคุมเพิ่มเติม' และเพิ่มจากรายการ
  3. คลิกการตั้งค่าพื้นฐาน
  4. เลื่อนไปที่ด้านล่างของกล่องการตั้งค่าพื้นฐานคลิกที่ลิงค์: 'ไปที่การตั้งค่าสำหรับแอพที่ปลอดภัยน้อย'
  5. เลือกตัวเลือก # 3: บังคับใช้การเข้าถึงแอพที่มีความปลอดภัยน้อยสำหรับผู้ใช้ทั้งหมด (ไม่แนะนำ)
  6. กด SAVE ที่ด้านล่างของหน้าต่าง

หลังจากทำแบบฟอร์มอีเมลของฉันจากเว็บไซต์กำลังทำงานอีกครั้ง โชคดี!


0

คุณอาจต้องสร้าง / สร้างรหัสผ่านสำหรับแอปเฉพาะจาก gmail แอพหรือสคริปต์ของคุณจะใช้รหัสผ่านใหม่นี้แทนรหัสผ่านปกติของคุณ รหัสผ่านปกติของคุณจะยังใช้งานได้ดีสำหรับคุณ

นั่นคือสิ่งที่ทำเพื่อฉัน ฉันยังคงใช้บัญชีอีเมลเดิม แต่ต้องสร้างรหัสผ่านเฉพาะแอปใหม่

https://support.google.com/accounts/answer/185833?hl=en

สกรีนช็อต

โดยทั่วไปคุณสามารถทำได้ที่นี่: https://security.google.com/settings/security/apppasswords


0

หากคุณกำลังใช้ gmail

  • เข้าสู่บัญชีของคุณ 1 ครั้ง

    2- เรียกดูลิงค์นี้

    3- อนุญาตแอปที่ปลอดภัยน้อยกว่า: เปิด

สนุก....



0

อย่าใส่จุดพักก่อนรอ smtp.SendMailAsync (เมล);

:)

เมื่อมันรอด้วยจุดพักให้ข้อผิดพลาดนี้เมื่อฉันลบจุดพักมันทำงาน


-1

ฉันใช้โซลูชันที่กล่าวถึงข้างต้นทั้งหมด แต่ในที่สุดก็ใช้งานได้หลังจากที่ฉันเปิดใช้งาน IMAP Access จากการตั้งค่า Gmail ลิงก์ไปที่เปิดใช้งาน IMAP Access ในการตั้งค่า gmail

แน่นอนว่าต้องใช้คะแนนในการแก้ปัญหาอื่นด้วย


สิ่งนี้ไม่ได้ช่วยฉัน การเปิดใช้งาน IMAP ทำให้คุณสามารถอ่านข้อความอีเมล Gmail จากโปรแกรมรับส่งเมลอื่น ๆ เช่น Outlook, Thunderbird
kimbaudi

-5

ลองเปลี่ยนโฮสต์นี่เป็นอันใหม่ฉันได้รับการกำหนดค่า mozilla thunderbird

Host = "smtp.googlemail.com"

ที่ทำงานให้ฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.