[c#] SMTP 서버에 보안 연결이 필요하거나 클라이언트가 인증되지 않았습니다. 서버 응답은 5.5.1 인증이 필요합니까?

신청서에서 이메일을 보내고 싶은데 메일 발송을 위해 다음 코드를 작성했습니다.

    MailMessage msg = new MailMessage();

    msg.From = new MailAddress("mymailid");
    msg.To.Add("receipientid");
    msg.Subject = "test";
    msg.Body = "Test Content";
    msg.Priority = MailPriority.High;

    SmtpClient client = new SmtpClient();

    client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com");
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.EnableSsl = true;
    client.UseDefaultCredentials = true;

    client.Send(msg);

나는 그것을 localhost에서 실행하고 있으므로 그것을 보내기 위해 어떤 실수를하고 있는지.

버튼을 보내면 다음과 같은 오류가 발생합니다.

SMTP 서버에 보안 연결이 필요하거나 클라이언트가 인증되지 않았습니다. 서버 응답 : 5.5.1 인증 필요.

Web.config 파일의 코드

 <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />   
    <add key="smtpServer" value="smtp.gmail.com" />
    <add key="EnableSsl" value = "true"/>
    <add key="smtpPort" value="587" />
    <add key="smtpUser" value="sender@gmail.com" />
    <add key="smtpPass" value="mypassword" />
    <add key="adminEmail" value="sender@gmail.com" />
  </appSettings>
  <system.net>
    <mailSettings>
      <smtp from="sender@gmail.com">
        <network host="smtp.gmail.com" password="mypassword" port="587" userName="sender@gmail.com"  enableSsl="true"/>
      </smtp>
    </mailSettings>
  </system.net>

이 오류를 해결하고 메일을 보내려면 어떻게해야합니까 ??



답변

먼저 Gmail의 보안 관련 문제를 확인하세요. Gmail에서 이중 인증을 사용하도록 설정했을 수 있습니다. 또한 보안 경고를 받으면 Gmail받은 편지함을 확인하십시오. 이 경우 아래 @mjb의 다른 답변을 확인하십시오.

다음은 이러한 문제에 대해 항상 먼저 확인하는 매우 일반적인 것입니다.

client.UseDefaultCredentials = true;

false로 설정하십시오.

@Joe King의 대답을 참고하십시오-client.UseDefaultCredentials 를 설정 하기 전에 client.UseDefaultCredentials를 설정 해야합니다.


답변

나도 같은 문제가있어.

이 솔루션을 찾았습니다.

Google은 최신 보안 표준을 사용하지 않는 일부 앱이나 기기의 로그인 시도를 차단할 수 있습니다. 이러한 앱과 기기는 침입하기가 더 쉽기 때문에 차단하면 계정을 더 안전하게 유지할 수 있습니다.

최신 보안 표준을 지원하지 않는 앱의 예는 다음과 같습니다.

  • iOS 6 이하가 설치된 iPhone 또는 iPad의 Mail 앱
  • 8.1 릴리스 이전의 Windows Phone의 메일 앱
  • Microsoft Outlook 및 Mozilla Thunderbird와 같은 일부 데스크톱 메일 클라이언트

따라서 Google 계정에서 보안 수준이 낮은 로그인 (또는 보안 수준이 낮은 앱 액세스 ) 을 활성화 해야합니다.

Google 계정에 로그인 한 후 다음으로 이동하십시오.

https://www.google.com/settings/security/lesssecureapps
또는
https://myaccount.google.com/lesssecureapps

C #에서는 다음 코드를 사용할 수 있습니다.

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("email@gmail.com");
    mail.To.Add("somebody@domain.com");
    mail.Subject = "Hello World";
    mail.Body = "<h1>Hello</h1>";
    mail.IsBodyHtml = true;
    mail.Attachments.Add(new Attachment("C:\\file.zip"));

    using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
    {
        smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }
}

——————-
아래 댓글 영역에서 Michael Freidgeim이 공유 한 정보 :
스크린 샷과 유사한 답변 https://stackoverflow.com/a/32457468/52277


답변

SmtpClient.Credentials 호출 한 후 설정하십시오 SmtpClient.UseDefaultCredentials = false.

설정 SmtpClient.UseDefaultCredentials = falseSmtpClient.Credentialsnull로 재설정 되므로 순서가 중요합니다 .


답변

몇 시간 동안 여러 가지를 검색하고 시도했습니다. 요약하면 다음 사항을 고려해야합니다.

  1. smtp.gmail.com대신 사용smtp.google.com
  2. 포트 587 사용
  3. client.UseDefaultCredentials = false;자격 증명을 설정 하기 전에 설정
  4. 보안 수준이 낮은 앱 에 대한 액세스 켜기
  5. 세트 client.EnableSsl = true;

이 단계가 도움이되지 않았다면이 답변을 확인하세요 .
System.Net.Mail FAQ 에서도 유용한 정보를 찾을 수 있습니다.


답변

Gmail 계정에 로그인 해보십시오. Gmail SMTP를 사용하여 이메일을 보내면 잠 깁니다. 잠기기 전에 보낼 수있는 이메일의 한도는 모르겠지만 한 번 로그인하면 코드에서 다시 작동합니다. webconfig 설정이 올바른지 확인하십시오.


답변

이런 식으로 시도해 보겠습니다. 약간의 변경 사항을 적용했습니다.

MailMessage msg = new MailMessage();

msg.From = new MailAddress("mymailid@gmail.com");
msg.To.Add("receipientid@gmail.com");
msg.Subject = "test";
msg.Body = "Test Content";
//msg.Priority = MailPriority.High;


using (SmtpClient client = new SmtpClient())
{
    client.EnableSsl = true;
    client.UseDefaultCredentials = false;
    client.Credentials = new NetworkCredential("mymailid@gmail.com", "mypassword");
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;

    client.Send(msg);
}

또한 메일 설정이있는 경우 app.config 파일을 표시하십시오.


답변

보안 수준이 낮은 앱 액세스 허용을 활성화하십시오.

여기에서 Gmail로 로그인 한 후 보안 수준이 낮은 앱을 활성화 할 수 있습니다.

https://myaccount.google.com/lesssecureapps

감사.