it-swarm-vi.com

Lỗi Gmail: Máy chủ SMTP yêu cầu kết nối an toàn hoặc máy khách không được xác thực. Phản hồi của máy chủ là: 5.5.1 Yêu cầu xác thực

Tôi đang sử dụng mã sau đây để gửi email. Mã hoạt động chính xác trong Máy cục bộ của tôi. Nhưng trên máy chủ sản xuất tôi nhận được thông báo lỗi

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

Và trên Gmail của tôi A/c tôi đã nhận được email sau khi tôi chạy mã từ máy chủ sản xuất

Chào , 

Một số người gần đây đã sử dụng mật khẩu của bạn để cố gắng đăng nhập vào Google Tài khoản mymailid @ gmail. Người này đã sử dụng một ứng dụng như vậy như một email, khách hàng hoặc thiết bị di động. 

Chúng tôi đã ngăn chặn nỗ lực đăng nhập trong trường hợp đây là một tên không tặc đang cố gắng Truy cập tài khoản của bạn. Vui lòng xem lại chi tiết về nỗ lực đăng nhập:

Thứ Sáu, ngày 3 tháng 1 năm 2014 13:56:08 giờ Địa chỉ IP UTC: xxx.xx.xx.xxx (abcd.net.) Địa điểm: Philadelphia PA, Philadelphia, PA, Hoa Kỳ

Nếu bạn không nhận ra nỗ lực đăng nhập này, người khác có thể là cố gắng truy cập vào tài khoản của bạn Bạn nên đăng nhập vào tài khoản của mình và đặt lại mật khẩu của bạn ngay lập tức 

Đặt lại mật khẩu 

Nếu đây là bạn và bạn đang gặp sự cố khi truy cập tài khoản của mình, hoàn thành các bước khắc phục sự cố được liệt kê tại http://support.google.com/mail?p=client_login

Trân trọng, Nhóm Tài khoản Google

193
vcs

Điều này thường xảy ra khi bạn thử đăng nhập từ múi giờ khác hoặc Máy tính địa chỉ IP. Máy chủ sản xuất của bạn và id mail bạn đã sử dụng cả hai đều ở múi giờ khác nhau. Chọn bất kỳ một trong những giải pháp:

1) Đăng nhập vào máy chủ sản xuất thông qua truy cập từ xa và đăng nhập vào gmail một lần bằng thông tin đăng nhập của bạn. Họ sẽ yêu cầu xác nhận, xác nhận và đăng xuất.

Hoặc 2) đăng nhập gmail vào máy tính cục bộ của bạn, Thực hiện theo Link và chọn xem lại hoạt động này và thực hiện các hành động thích hợp.

162
Arshad

Khi bạn cố gửi thư từ mã và bạn thấy lỗi "Máy chủ SMTP yêu cầu kết nối an toàn hoặc máy khách không được xác thực. Phản hồi của máy chủ là: 5.5.1 Yêu cầu xác thực", hơn lỗi có thể xảy ra do các trường hợp sau.

trường hợp 1: khi mật khẩu sai

trường hợp 2: khi bạn cố gắng đăng nhập từ một số Ứng dụng

trường hợp 3: khi bạn cố gắng đăng nhập từ tên miền khác với múi giờ/tên miền/máy tính của bạn (Đây là trường hợp trong hầu hết các tình huống khi gửi thư từ mã)

Có một giải pháp cho mỗi

giải pháp cho trường hợp 1: Nhập mật khẩu chính xác.

giải pháp 1 cho trường hợp 2 : đi tới cài đặt bảo mật tại liên kết tiếp theo https://www.google .com/settings/security/lesssecur Ứng dụng lại và cho phép các ứng dụng kém an toàn hơn. Vì vậy, bạn sẽ có thể đăng nhập từ tất cả các ứng dụng.

giải pháp 2 cho trường hợp 2 :( xem https://stackoverflow.com/a/9572958/52277 ) kích hoạt hai- xác thực yếu tố (còn gọi là xác minh hai bước) và sau đó tạo mật khẩu dành riêng cho ứng dụng. Sử dụng mật khẩu mới được tạo để xác thực qua SMTP.

giải pháp 1 cho trường hợp 3: (Điều này có thể hữu ích) bạn cần xem lại hoạt động. nhưng xem xét hoạt động sẽ không hữu ích do các tiêu chuẩn bảo mật mới nhất, liên kết sẽ không hữu ích. Vì vậy, hãy thử trường hợp dưới đây.

giải pháp 2 cho trường hợp 3 : Nếu bạn đã lưu trữ mã của mình ở đâu đó trên máy chủ sản xuất và nếu bạn có quyền truy cập vào máy chủ sản xuất, hãy kết nối máy tính từ xa với máy chủ sản xuất và thử đăng nhập một lần từ trình duyệt của máy chủ sản xuất. Điều này sẽ thêm excpetioon để đăng nhập vào google và bạn sẽ được phép đăng nhập từ mã.

Nhưng nếu bạn không có quyền truy cập vào máy chủ sản xuất. hãy thử giải pháp 3

giải pháp 3 cho trường hợp 3: Bạn phải kích hoạt đăng nhập từ múi giờ/ip khác cho tài khoản google của mình .

để thực hiện việc này, hãy theo liên kết https://g.co/allowaccess và cho phép truy cập bằng cách nhấp vào nút tiếp tục.

Và đó là nó. Bạn đi đây Bây giờ bạn sẽ có thể đăng nhập từ bất kỳ máy tính nào và bằng bất kỳ phương tiện ứng dụng nào vào tài khoản google của bạn.

259
Roshan Parmar

Đây là một vấn đề bảo mật, Gmail theo mặc định sẽ ngăn truy cập vào tài khoản email của bạn từ các ứng dụng tùy chỉnh. Bạn có thể thiết lập nó để chấp nhận đăng nhập từ ứng dụng của bạn.

Sau khi đăng nhập vào e-mail của bạn, BẤM VÀO ĐÂY

Điều này sẽ đưa bạn đến trang sau

 Less Secure Apps Page

92
Sayka

Sau khi dành vài giờ hôm nay để thử mọi giải pháp ở đây, tôi vẫn không thể vượt qua lỗi chính xác này. Tôi đã sử dụng gmail nhiều lần theo cách này vì vậy tôi biết đó là một thứ ngớ ngẩn, nhưng tôi không làm gì để khắc phục vấn đề. Cuối cùng tôi tình cờ tìm thấy giải pháp trong trường hợp của mình nên nghĩ rằng tôi sẽ chia sẻ.

Đầu tiên, hầu hết các câu trả lời ở trên cũng được yêu cầu, nhưng trong trường hợp của tôi, đó là một vấn đề đơn giản để đặt hàng mã trong khi tạo lớp SmtpClient.

Trong đoạn mã đầu tiên này bên dưới, hãy chú ý vị trí dòng "Thông tin xác thực = tín dụng". Việc triển khai này sẽ tạo ra lỗi được tham chiếu trong câu hỏi này ngay cả khi bạn có mọi thứ khác được thiết lập đúng.

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
        }

Tuy nhiên, nếu bạn di chuyển cuộc gọi setter Credentials xuống phía dưới, email sẽ được gửi mà không gặp lỗi. Tôi không thay đổi mã xung quanh ... tức là ... tên người dùng/mật khẩu, v.v ... Rõ ràng, cả EnableSSL, UseDefaultCredentials hoặc DeliveryMethod đều phụ thuộc vào Thông tin xác thực được đặt trước .... Tôi không kiểm tra tất cả để tìm ra nó là cái nào.

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
        }

Hy vọng điều này sẽ giúp cứu người khác một số đau đầu trong tương lai.

18
user1011627

Xin chào, tôi có vấn đề tương tự, 

những gì tôi đã làm để giải quyết nó. là để bật ứng dụng kém an toàn hơn . sau khi kết nối với tài khoản gmail của tôi. Tôi đã nhập liên kết này: https://www.google.com/sinstall/security/lesssecur Ứng dụng lại

Sau đó, tôi bật ứng dụng bảo mật và ứng dụng đã hoạt động . Nó cũng đã được nói ở trên

11
Barak Rosenfeld

Chỉ cần làm theo các bước trong email google và kích hoạt các ứng dụng kém an toàn hơn. 

8
Trung

Tôi có một mã làm việc trước đây ném lỗi này bây giờ. Không có vấn đề về mật khẩu. Không cần phải chuyển đổi tin nhắn sang base64. Hóa ra, tôi cần phải làm như sau:

  1. Tắt xác thực 2 yếu tố
  2. Đặt "Cho phép ứng dụng kém an toàn hơn" thành BẬT
  3. Đăng nhập vào tài khoản gmail của bạn từ máy chủ sản xuất
  4. Đi ở đây cũng để phê duyệt hoạt động đăng nhập
  5. Chạy ứng dụng của bạn trong máy chủ sản xuất

Mã làm việc

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

Tắt xác thực 2 yếu tố  Turning off 2-factor authentication

Đặt "Cho phép ứng dụng kém an toàn hơn" thành BẬT (cùng trang, cần cuộn xuống dưới cùng)  Allow less secure apps

7
Jeson Martajaya

Tôi đã phải đối mặt với cùng một vấn đề. Nó xảy ra khi bạn bật Xác minh 2 bước (MFA) . Chỉ cần tắt Xác minh 2 bước và vấn đề của bạn sẽ được giải quyết.

6
Anik

Dưới đây là mã của tôi. Tôi cũng có lỗi tương tự nhưng vấn đề là tôi đã nhập sai mật khẩu. Mã bên dưới sẽ hoạt động hoàn hảo..thử nó

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

Bạn có thể giới thiệu nó trong blog của tôi

4
Ganesh Pillai N

Bạn cần bật "Cho phép ứng dụng kém an toàn hơn" từ đây https://myaccount.google.com/lesssecurur lại

3
Raj K

chỉ cần bật cài đặt hoặc gmail . xem hình ảnh đã cho bên dưới:

 enter image description here

2
Rajesh Paliwal

Điều làm việc cho tôi là kích hoạt tùy chọn cho các ứng dụng kém an toàn hơn (tôi đang sử dụng 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

Vì vậy, hãy đăng nhập vào tài khoản của bạn và sau đó truy cập google.com/sinstall/security/lesssecur Ứng dụng lại

2
Edgar

Tôi gặp vấn đề tương tự đối với một ứng dụng được triển khai cho Microsoft Azure.

SmtpException: Máy chủ SMTP yêu cầu kết nối an toàn hoặc khách hàng không được xác thực. Phản hồi của máy chủ là: 5.5.1 Yêu cầu xác thực.

Trước tiên, tôi đã phê duyệt tất cả các thiết bị không xác định (một số địa chỉ IP có nguồn gốc từ Ireland) trên trang sau (đã đăng nhập với tư cách là người dùng gmail): https://security.google.com/sinstall/u/1/security/secureaccount

Tôi đã sử dụng các cài đặt sau cho khách hàng:

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

Nó chỉ bắt đầu hoạt động sau khi tôi đặt thuộc tính sau trên máy khách smtp:

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

Tôi đã thử tất cả các đề xuất được tìm thấy ở đây, từ việc bật các ứng dụng kém an toàn hơn, đến thử cổng 587 ... không có gì hiệu quả. Cuối cùng tôi chỉ nhận xét ra dòng UseDefaultCredentials = false. Tất cả mọi thứ hoạt động nếu tôi không chạm vào boolean đó. 

1
Kris Coleman

Một nhận xét từ Tomasz Madeyski là điều đã khắc phục vấn đề của tôi ... anh ta nói rằng có lỗi trên SetDefaultCredential, anh ta nói: 

"Vấn đề là trong setter UseDefaultCredentials có mã này: this.transport.Credentials = value?

nếu bạn đặt smtpClient.UseDefaultCredentials = false sau khi đặt thông tin đăng nhập ... thì dòng này được đặt thành null thông tin đăng nhập đó ...

1
FabianSilva

Bạn có thể cần tạo/tạo mật khẩu APP cụ thể từ gmail . Ứng dụng hoặc tập lệnh của bạn sau đó sẽ sử dụng mật khẩu mới này thay vì mật khẩu thông thường của bạn . Mật khẩu thông thường của bạn sẽ vẫn hoạt động tốt cho bạn.

Đó là những gì đã làm cho tôi . Tôi vẫn sử dụng cùng một tài khoản email nhưng phải tạo một mật khẩu cụ thể cho ứng dụng mới.

https://support.google.com/accountsals/185833?hl=vi

 Screen shot

Về cơ bản, bạn có thể làm điều đó tại đây: https://security.google.com/sinstall/security/apppasswords

0
samiup

THÁNG 11 NĂM 2018, đã thử mọi cách ở trên mà không thành công.

Dưới đây là giải pháp làm việc cuối cùng. Thật không may, nó không sử dụng SSL, nhưng nó hoạt động !!!

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);
}
0
InGeek

Bạn nên không cho phép các ứng dụng kém an toàn hơn truy cập vào tài khoản google của bạn.

làm:

https://myaccount.google.com/lesssecurur xuất hiện lại

0
MohammadSoori

Tôi đã thực sự xem xét rất nhiều ý tưởng, giải pháp duy nhất là theo cách này (hoạt động với các Nhà cung cấp email khác nhau):

            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

Nếu bạn đang sử dụng gmail.

  • 1 đăng nhập vào tài khoản của bạn 

    2- duyệt liên kết này liên kết

    3- Cho phép các ứng dụng kém an toàn hơn: BẬT

Thưởng thức....

0
Muhammad Azeem

Tôi là một ứng dụng google cho thuê bao kinh doanh và tôi dành vài giờ qua để xử lý việc này, ngay cả khi đã có tất cả các cài đặt chính xác (smtp, port, enableSSL, v.v.). Đây là những gì đã làm việc cho tôi và các trang web đã đưa ra lỗi 5.5.1 khi cố gắng gửi email:

  1. Đăng nhập vào admin.google.com của bạn
  2. Nhấp vào BẢO MẬT <- nếu điều này không hiển thị, sau đó nhấp vào 'KIỂM SOÁT THÊM' và thêm nó vào danh sách
  3. Nhấp vào Cài đặt cơ bản
  4. Cuộn xuống dưới cùng của hộp Cài đặt cơ bản, nhấp vào liên kết: 'Chuyển đến cài đặt cho các ứng dụng kém an toàn hơn'
  5. Chọn tùy chọn # 3: Thi hành quyền truy cập vào các ứng dụng kém an toàn hơn cho tất cả người dùng (Không được đề xuất)
  6. Nhấn SAVE ở dưới cùng của cửa sổ

Sau khi làm điều này, các mẫu email của tôi từ trang web đã hoạt động trở lại. Chúc may mắn!

0
RichieMN

không đặt điểm dừng trước khi chờ smtp.SendMailAsync (mail);

:) 

khi nó chờ với điểm dừng sẽ báo lỗi này khi tôi xóa điểm dừng, nó đã hoạt động

0
dewelloper