it-swarm-ko.com

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]에 로그인하려고 시도했습니다. 이 사람은 이메일, 클라이언트 또는 휴대 기기와 같은 애플리케이션을 사용하고있었습니다.

귀하의 계정에 액세스하려는 납치범 인 경우 로그인 시도가 차단되었습니다. 로그인 시도에 대한 세부 정보를 검토하십시오.

2014 년 1 월 3 일 금요일 13시 56 분 8 초시 UTC IP 주소 : xxx.xx.xx.xxx (abcd.net.) 위치 : Philadelphia PA, Philadelphia, PA, 미국

이 로그인 시도를 인식하지 못하면 다른 사람이 내 계정에 액세스하려고 시도했을 수 있습니다. 계정에 로그인하고 즉시 비밀번호를 재설정해야합니다.

암호를 재설정

귀하의 계정에 액세스하는 데 문제가있는 경우 http://support.google.com/mail?p=client_login 에 나열된 문제 해결 단계를 완료하십시오.

진심으로 감사드립니다. Google 계정 팀

218
vcs

이는 일반적으로 다른 시간대 또는 IP 주소 컴퓨터에서 로그인을 시도 할 때 발생합니다. 프로덕션 서버와 사용 된 메일 ID가 서로 다른 시간대에 있습니다. 다음 두 가지 솔루션 중 하나를 선택하십시오.

1) 원격 액세스를 통해 프로덕션 서버에 로그인하고 자격 증명을 사용하여 gmail에 한 번 로그인하십시오. 그들은 확인을 요구하고 그것을 확인하고 로그 아웃합니다.

또는 2) gmail을 로컬 컴퓨터에 로그인하고 Link 을 따라 이 활동을 검토하십시오 를 선택하고 적절한 조치를 취하십시오.

169
Arshad

코드에서 메일을 보내려고 할 때 "SMTP 서버에 보안 연결이 필요하거나 클라이언트가 인증되지 않았습니다. 서버 응답 : 5.5.1 인증 필요"오류가 발생하여 오류가 발생했을 때 다음과 같은 경우에.

case 1 : 암호가 틀렸을 때

case 2 : 일부 앱에서 로그인을 시도 할 때

case 3 : 표준 시간대/도메인/컴퓨터 이외의 도메인에서 로그인을 시도 할 때 (코드에서 메일을 보낼 때 대부분의 경우에 해당))

각각에 대한 해결책이 있습니다

대소 문자 1에 대한 해결 방법 정확한 암호를 입력하십시오.

case 2의 경우 솔루션 1 : followig 링크에서 보안 설정으로 이동 https://www.google.com/settings/security/lesssecureapps 덜 안전한 앱을 사용하도록 설정합니다. 모든 앱에서 로그인 할 수 있습니다.

사례 2의 경우 해결책 2 : (( https://stackoverflow.com/a/9572958/52277 참조) 2 단계 인증 (일명 2 단계 인증)을 사용하도록 설정합니다. 그런 다음 애플리케이션 비밀번호를 생성하십시오. 새로 생성 된 비밀번호를 사용하여 SMTP를 통해 인증하십시오.

경우 3의 해결 방법 1] (이것이 도움이 될 수 있습니다) 활동을 검토해야합니다. 그러나 최신 보안 표준으로 인해 활동을 검토하는 것은 도움이되지 않습니다. 링크는 유용하지 않습니다. 아래의 경우를 시도하십시오.

case 3의 경우 해결 방법 2 : 프로덕션 서버에서 코드를 호스팅하고 프로덕션 서버에 액세스 할 수있는 경우 프로덕션 서버에 원격 데스크톱 연결을 수행하고 브라우저에서 한 번 로그인하십시오 프로덕션 서버의 이것은 구글에 로그인하기 위해 excpetioon을 추가하고 코드에서 로그인 할 수 있습니다.

하지만 프로덕션 서버에 액세스 할 수없는 경우 어떻게해야합니까? 해결 방법 3

solution 3 for case 3 : Google 계정의 다른 시간대/ip에서 로그인을 활성화해야합니다.

이렇게하려면 https://g.co/allowaccess 링크를 따르고 계속 단추를 클릭하여 액세스를 허용하십시오.

그리고 그게 다야. 여기 요 이제 어느 컴퓨터에서나 앱을 통해 Google 계정에 로그인 할 수 있습니다.

259
Roshan Parmar

그것의 보안 문제, Gmail은 기본적으로 사용자 정의 응용 프로그램에서 전자 메일 계정에 대한 액세스를 방지합니다. 애플리케이션의 로그인을 수락하도록 설정할 수 있습니다.

전자 메일에 로그인 한 후, 여기를 클릭하십시오.

그러면 다음 페이지로 이동합니다.

 Less Secure Apps Page

95
Sayka

오늘 모든 해결책을 시도하는 데 두 시간을 소비 한 후에도이 정확한 오류를 지나칠 수 없었습니다. 나는이 방법으로 여러 번 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 또는 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 단계 인증 사용 안함
  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("[email protected]", "secretpassword"),
            EnableSsl = true
        };

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

2 단계 인증 해제 { Turning off 2-factor authentication

'보안 수준이 낮은 앱 허용'을 ON으로 설정 (같은 페이지, 아래로 스크롤해야 함) Allow less secure apps

8
Jeson Martajaya

Google 이메일의 단계를 따르고 덜 안전한 앱을 사용하도록 설정하십시오.

8
Trung

여기에서 "덜 안전한 앱 허용"을 켜야합니다. https://myaccount.google.com/lesssecureapps

6
Raj K

나는 똑같은 문제에 직면 해있다. 2 단계 인증 (MFA)을 사용 설정하면 문제가 발생합니다. 2 단계 인증을 사용 중지하면 문제가 해결됩니다.

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 사용자로 로그인)에서 알 수없는 모든 기기 (아일랜드 출신의 일부 IP 주소)를 승인했습니다. 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에 다음 속성을 설정 한 후에 만 ​​작동하기 시작했습니다.

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

덜 안전한 앱을 사용하는 것부터 포트 587을 시도하는 것에 이르기까지 여기있는 모든 제안을 시도했지만 아무 것도 효과가 없었습니다. 마지막으로 나는 UseDefaultCredentials = false 라인을 주석 처리했다. 그 부울을 만지지 않으면 모든 것이 작동했습니다.

1
Kris Coleman

2018 년 11 월, 모든 성공을 거두었습니다.

다음은 마침내 성공한 솔루션입니다. 불행히도 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 setter에 다음 코드가 있다는 것입니다. this.transport.Credentials = value? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials : (ICredentialsByHost) null : Credentials 설정자가 설정 한 자격 증명을 덮어 씁니다. SmtpClient의 버그"

만약 당신이 smtpClient.UseDefaultCredentials = false를 넣어 자격 증명을 ...이 라인은 null로 설정 자격 증명 ...

1
FabianSilva

Gmail에서 특정 APP 비밀번호를 생성/생성해야 할 수 있습니다. 당신은 앱이나 스크립트가 일반 암호 대신이 새로운 암호를 사용합니다. 일반 비밀번호는 계속 사용할 수 있습니다.

그것이 나를 위해 무엇을 했는가. 나는 여전히 동일한 이메일 계정을 사용했지만 새로운 앱 비밀번호를 생성해야했습니다.

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

 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

Gmail을 사용하는 경우.

  • 귀하의 계정에 1 로그온

    2-이 링크 찾아보기

    3- 보안 수준이 낮은 앱 허용 : 사용

즐겨....

0
Muhammad Azeem

저는 비즈니스 가입자를위한 Google 앱이며, 올바른 설정 (smtp, port, enableSSL 등)을 모두 마친 후에도이 문제를 다루는 지난 몇 시간을 보내고 있습니다. 이메일을 보낼 때 5.5.1 오류가 발생하는 웹 사이트와 저에게 효과적이었습니다.

  1. Admin.google.com에 로그인하십시오.
  2. 보안이 표시되지 않으면 '보안'을 클릭 한 다음 '추가 제어'를 클릭하고 목록에서 추가하십시오.
  3. 기본 설정을 클릭하십시오.
  4. 기본 설정 상자의 아래쪽으로 스크롤하여 링크를 클릭합니다. '덜 안전한 앱을위한 설정으로 이동'링크를 클릭하십시오.
  5. 옵션 # 3 : 보안 수준이 낮은 앱에 모든 사용자가 액세스하도록 허용 (권장하지 않음)을 선택합니다.
  6. 창의 아래쪽에있는 SAVE를 누릅니다.

이 작업을 마친 후 웹 사이트의 전자 메일 양식이 다시 작동했습니다. 행운을 빕니다!

0
RichieMN

smtp.SendMailAsync (mail)을 기다리기 전에 중단 점을 넣지 마십시오.

:)

중단 점을 제거 할 때이 오류를주는 중단 점을 기다리는 경우 작동했습니다.

0
dewelloper