C #을 사용하여 Gmail SMTP 서버를 통해 이메일 보내기


243

어떤 이유로 든 " Gmail을 통해 .NET에서 이메일 보내기 "에 대해 허용 된 답변이나 다른 어떤 것도 나를 위해 일하지 않습니다 . 그들은 왜 작동하지 않습니까?

업데이트 : 다른 질문에 대한 모든 대답 (수락 및 기타)을 시도했지만 그중 아무것도 작동하지 않습니다.

다른 사람에게도 효과가 있는지 알고 싶습니다. 그렇지 않으면 Google이 이전에 일어난 일을 변경했을 수 있습니다.

를 사용하는 코드를 시도하면 SmtpDeliveryMethod.NetworkSend (message)에서 SmtpException이 신속하게 수신됩니다. 메시지는

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

서버 응답은 다음과 같습니다.

5.5.1 인증이 필요합니다. "<-에서 자세히 알아보십시오.

최신 정보:

이것은 오래 전에 물었던 질문이며 허용되는 답변은 다른 프로젝트에서 여러 번 사용했던 코드입니다.

이 게시물과 다른 EmailSender 프로젝트의 아이디어 중 일부 를 Codeplex에서 EmailSender 프로젝트를 만들었습니다 . 테스트 용으로 설계되었으며 GoDaddy 및 Gmail과 같은 즐겨 사용하는 SMTP 서비스를 지원합니다.


다른 언어로 비슷한 방법을 사용 하여이 작업을 시도했습니다. 같은 유형의 일이 발생했습니다. 이전에 작동했던 오래된 문서화 된 방법은 저에게 효과적이지 않았습니다. 따라서 Google이 무언가를 변경했는지 또는 무언가 잘못했는지 궁금해합니다.
AaronLS

3
@aaronls 유일한 최근 변경 사항은 465 포트와 관련이있는 것 같습니다. 솔루션을 찾는 동안 시도했지만 (방금 동일한 작업을 수행 중임) 465 포트가 항상 시간 초과됩니다. 이 경우 587 포트로 시도하십시오.
eglasius

2
이 문제는 "단어 검증"(보안 문자)으로 인해 발생합니다. 웹 인터페이스를 통해 직접 로그인하고 보안 문자를 입력하면 SMTP가 작동하기 시작합니다.
Robert Koritnik

4
FWIW는 나를 위해 일합니다. 587 및 .EnableSSL true를 사용해야합니다. c # 4 / .NET 4는 현재 대체 465 / SSL을 지원하지 않습니다. gmail은 다른 메일 클라이언트 구성을 요구합니다 .
gerryLowry

1
@eglasius 답변을 따르고 Gmail에서 "보안 수준이 낮은 앱 허용"설정을 켜서 Gmail이 계정을 인증 할 수 있도록하십시오.
user2713706

답변:


291

CVertex에서 코드를 검토 한 후 공개되지 않으면 게시하십시오. 방금 작업중 인 테스트 ASP.NET 사이트 에서이 기능을 사용하도록 설정했습니다.

실제로 어느 시점에서 코드에 문제가있었습니다. 콘솔 프로그램에서 더 간단한 버전을 사용하고 작동하는 것을 알 때까지는 그것을 발견하지 못했습니다 (걱정할 때 Gmail 측에서는 변경되지 않았습니다). 아래 코드는 참조한 샘플과 동일하게 작동합니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
                EnableSsl = true
            };
            client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

또한 web.config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx 및 코드 의 조합을 사용하여 작업했습니다 ( EnableSsl구성 파일에 일치하지 않기 때문에 :()).


1
C # winforms 응용 프로그램에서 훌륭하게 작동했습니다. 고마워, 프레디
Andrew

13
이와 같은 코드는 사용자에게 Gmail 자격 증명을 일반 텍스트로 효과적으로 전송하고 있음을 기억하십시오 ...
Chris Marisic

3
실제로 Web.config의에서 enableSsl 설정을 매칭 아래 답변을 참조,이
위브 Tijsma

4
4.0에서 추가 된 @Zidad
eglasius

21
Gmail 설정 페이지 ( google.com/settings/security/lesssecureapps) 에서 "안전하지 않은 앱"에 대한 액세스를 활성화해야 할 수도 있습니다 . "서버 응답은 다음과 같습니다 : 5.5.1 인증 필요
Ravendarksky

74

다음은 것입니다 거의 확실하게 해답이 될 귀하의 질문에 모두 ELSE 실패한 경우 :

똑같은 오류가 발생했습니다 .Google의 새로운 비밀번호 강도 측정 알고리즘이 현재 비밀번호가 너무 약한 것으로 간주되어 변경되지 않았으며 (메시지 또는 경고조차 포함하지 않음) 나에게 알려주지 않았습니다. ? 글쎄, 나는 그것이 도움이되는지 확인하기 위해 비밀번호를 변경하기로 결정했다. (다른 모든 것을 시도하지 않았지만) 비밀번호를 변경했을 때 효과가 있었다!

그런 다음 실험을 위해 비밀번호를 이전 비밀번호로 다시 변경하여 어떻게되는지 확인하려고했지만 Gmail에서 '이 변경 사항을 선택한대로 저장할 수 없습니다. password is too weak "(이전 암호가 너무 약합니다.) 이전 암호로 돌아 가지 않습니다. 나는 a) x 개월마다 한 번씩 암호를 변경해야하거나 b) 때문에 오류가 발생했다는 것을 알았습니다. 내가 전에 말했듯이, 암호 강도 알고리즘이 변경되었으므로 아무 데나 로그인하려고 할 때 이것에 대해 아무 말도하지 않았지만 약한 암호가 허용되지 않았습니다! 이 비밀번호 (2 번)는 약한 비밀번호가 약 4 개월이되어 Gmail에서 사용할 수 있기 때문에 가장 가능성이 높은 시나리오입니다.

그들이 이것에 대해 아무 말도하지 않은 것은 꽤 나쁘지만 말이됩니다. 대부분의 도용 된 이메일은 Gmail 외부의 소프트웨어를 사용하여 로그인했기 때문에 Gmail 환경 외부에서 Gmail을 사용하려면 더 강력한 비밀번호가 필요합니다.

이게 도움이 되길 바란다!


2
고맙습니다. 비밀번호를 강력하게 변경하면 모든 것이 잘 작동하도록 비밀번호를 변경하십시오.
Gavin

1
이것은 정확히 내 문제였습니다. 다른 모든 제안은 구성에 관한 것이지만 구성은 처음부터 정확했지만 오류가 계속 발생했습니다. 비밀번호를 변경하면 모든 차이가 발생했습니다.
André Vermeulen

고마워, 마침내이 문제를 해결할 수있었습니다. 제 사례는 실제로 더 복잡했습니다. 제 컴퓨터 (조지아, 코카서스에 있음)에서 전자 메일을 보낼 수는 있었지만 프로덕션 서버 (영국)에서 전자 메일이 실패했습니다. 복잡한 하나의 암호를 변경하면 이제 모든 것이 작동합니다 :)
Kirill Chilingarashvili

감사. 비밀번호 강도가없는 Gmail 계정과 동일한 문제가있었습니다. 강력한 것으로 업데이트하고 코드가 작동합니다.
Thomas. 벤츠

고마워, 예. 마지막으로 비밀번호를 강력한 비밀번호로 변경합니다.
Misha Beskin

68

위의 다른 문제 해결 단계 외에도 Gmail 계정에서 2 단계 인증 ( 2 단계 인증 이라고도 함)을 사용하도록 설정 한 경우 응용 프로그램 비밀번호를 생성하고 새로 사용해야합니다. SMTP를 통해 인증하기 위해 생성 된 비밀번호 .

계정을 만들려면 https://www.google.com/settings/를 방문하십시오.계정 하여 애플리케이션 및 사이트 승인을 선택 하여 비밀번호를 생성하십시오.


1
2 단계 인증을 사용하도록 설정하지 않았으며 비밀번호를 얼마나 안전하게 보호했는지는 중요하지 않았습니다. 이것이 내 문제를 해결할 수있는 유일한 방법이었습니다. 문제없이 2 단계 및 약한 비밀번호없이 다른 Gmail 계정을 사용할 수있었습니다. 실제로 사용하려는 계정을 사용하려면 2 단계를 활성화하고 애플리케이션 비밀번호를 사용해야했습니다.
이안 로버트슨

정확히 내가하고있는 일, 여전히 같은 오류 :-/ 내 비밀번호가 충분하지 않은 것처럼 작동하지만 Gmail에서 제공 한 앱 비밀번호를 사용하고 있습니다 !!!
Jerry Dodge

55
Turn On Access For Less Secure Apps and it will work for all no need to change password.

Gmail 설정에 연결

여기에 이미지 설명을 입력하십시오


1
이것은 나를 위해 일했습니다. 더욱이, 위의 방법으로 이메일을 보내려고했을 때, 실제로 구글로부터 이메일을 받았는데, 그들은 덜 안전한 앱에서이 시도를 차단했으며이를 해결하기 위해이 방법을 언급했습니다.
Demarsch

1
이것은 다른 모든 설정이 설정되어 있고 작동하지 않는 것처럼 보였으므로 퍼즐에서 가장 중요한 열쇠입니다. 이 설정을 사용하자마자 매력처럼 작동했습니다.
분실

1
이것은 나를 위해 일했습니다. 앱 비밀번호 + SSL + 네트워크 자격 증명. (VB.NET)
CrazyIvan1974

30

앞서 언급 한 여러 상황으로 인해 Gmail 계정에서 이메일을 보내는 데 문제가 있습니다. 다음은 작동 방식과 유연성을 동시에 유지하는 방법에 대한 요약입니다.

  • 먼저 Gmail 계정을 설정하십시오.
    • IMAP을 사용하도록 설정하고 올바른 최대 메시지 수를 지정하십시오 (여기서 가능).
    • 비밀번호는 7 자 이상이고 Google에 따라 강력한 비밀번호 여야합니다.
    • 보안 문자 코드를 먼저 입력하지 않아도됩니다. 브라우저에서 테스트 이메일을 보내면됩니다.
  • web.config (또는 app.config, 아직 시도하지는 않았지만 Windows 응용 프로그램에서 작동하게하는 것이 쉽다고 가정합니다)에서 변경하십시오.
<configuration>
    <appSettings>
        <add key="EnableSSLOnMail" value="True"/>   
    </appSettings>

    <!-- other settings --> 

    ...

    <!-- system.net settings -->
    <system.net>
        <mailSettings>
            <smtp from="yourusername@gmail.com" deliveryMethod="Network">
                <network 
                    defaultCredentials="false" 
                    host="smtp.gmail.com" 
                    port="587" 
                    password="stR0ngPassW0rd" 
                    userName="yourusername@gmail.com"
                    />
                <!-- When using .Net 4.0 (or later) add attribute: enableSsl="true" and you're all set-->
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
Add a Class to your project:

Imports System.Net.Mail

Public Class SSLMail

    Public Shared Sub SendMail(ByVal e As System.Web.UI.WebControls.MailMessageEventArgs)

        GetSmtpClient.Send(e.Message)

        'Since the message is sent here, set cancel=true so the original SmtpClient will not try to send the message too:
        e.Cancel = True

    End Sub

    Public Shared Sub SendMail(ByVal Msg As MailMessage)
        GetSmtpClient.Send(Msg)
    End Sub

    Public Shared Function GetSmtpClient() As SmtpClient

        Dim smtp As New Net.Mail.SmtpClient
        'Read EnableSSL setting from web.config
        smtp.EnableSsl = CBool(ConfigurationManager.AppSettings("EnableSSLOnMail"))
        Return smtp
    End Function

End Class

그리고 지금 당신이 이메일을 보내려고 할 때마다 당신이해야 할 일은 전화 SSLMail.SendMail:

예 : PasswordRecovery 컨트롤이있는 페이지에서 :

Partial Class RecoverPassword
Inherits System.Web.UI.Page

Protected Sub RecoverPwd_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles RecoverPwd.SendingMail
    e.Message.Bcc.Add("webmaster@example.com")
    SSLMail.SendMail(e)
End Sub

End Class

또는 코드의 어느 곳에서나 전화 할 수 있습니다.

SSLMail.SendMail(New system.Net.Mail.MailMessage("from@from.com","to@to.com", "Subject", "Body"})

이것이이 게시물에 빠진 사람에게 도움이되기를 바랍니다. (VB.NET을 사용했지만 .NET 언어로 변환하는 것이 쉽지 않다고 생각합니다.)


+1 "enableSsl ="true "-어셈블리를 다시 컴파일하지 않고 Smtp.enableSsl 속성을 구체적으로 설정하지 않는 레거시 앱에서 작동합니다.
Metro Smurf

방화벽을 잊지 마십시오. 포트 587은 일반적인 포트가 아닙니다.
Guy Lowe

13
Dim SMTPClientObj As New Net.Mail.SmtpClient
SMTPClientObj.UseDefaultCredentials = False
SMTPClientObj.Credentials = New System.Net.NetworkCredential("myusername@gmail.com", "mypwd")
SMTPClientObj.Host = "smtp.gmail.com"
SMTPClientObj.Port = 587
SMTPClientObj.EnableSsl = True
SMTPClientObj.Send("myusername@gmail.com","yourusername@gmail.com","test","testbody")

"SMTP 서버에 보안 연결이 필요하거나 클라이언트가 인증되지 않았습니다. 서버 응답 : 5.5.1 인증이 필요합니다. 자세히 알아보기"와 같은 오류가 표시되면 SMTPClientObj.UseDefaultCredentials = False이 줄과이 줄을 확인하십시오. 전에해야합니다 SMTPClientObj.Credentials.

이 두 줄을 반대로 바꾸려고 했지만 5.5.1 인증 필요 오류가 반환되었습니다.


이것이 바로 나에게 일어난 일입니다. 속성 설정 순서가 문제를 고칠 것이라고 생각한 사람!
Bill Yang

이것은 나에게도 문제였으며 제안 된대로 주문을 전환했으며 두통이 발생했습니다.
eth0

13

오 ... 놀랍습니다 ... 먼저 이메일을 보내지 못했습니다. 그러나이 두 줄의 순서를 아래와 같이 변경하면 완벽하게 작동합니다.

//(1)
client.UseDefaultCredentials = true;
//(2)
client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");

이 도움을 바랍니다 !!! :)


1
예, 순서가 차이를 만듭니다. 특히 자격 증명 속성을 설정하고 기본 자격 증명을 사용하지 않으려는 경우.
Stefan Cvetanovski

1
설명서에 따라 자격 증명을 사용하려면 UseDefaultCredentials = false를 설정해야합니다. 그러나이 두 설정은 비밀리에 얽혀있는 것처럼 보입니다. UseDefaultCredentials를 true 또는 false로 설정하면 신임 정보를 널로 설정하면 부작용이 발생합니다. 자격 증명이 부작용으로 설정 될 수 있음을 설정하는 것으로 나타납니다. UseDefaultCredentials = false. 이 작업을 수행하는 것으로 문서화되어 있지 않으면 버그이거나 단순한 개발자 일 수 있습니다.
Aaron

10

문제는 Gmail을 통해 보낼 수있는 기술적 능력이 아닙니다. 대부분의 상황에서 작동합니다. 기계를 보낼 수없는 경우 일반적으로 기계가 제어에서 한 번 이상 사람으로 인증되지 않았기 때문입니다.

대부분의 사용자가 직면하는 문제는 Google이 항상 발신 제한을 변경하기로 결정한다는 것입니다. 항상 솔루션에 방어 코드를 추가해야합니다. 오류가 발생하면 전송 속도를 줄이고 잠시 동안 전송을 중지하십시오. Google에 계속 전송을 시도하면 지연 시간에 시간이 추가되어 다시 보낼 수 있습니다.

현재 시스템에서 수행 한 작업은 각 메시지 사이에 1.5 초 지연으로 전송하는 것입니다. 그런 다음 오류가 발생하면 5 분 동안 중지했다가 다시 시작하십시오. 이것은 일반적으로 작동하며 계정 한도까지 보낼 수 있습니다 (마지막으로 하루에 2,000 명의 고객이 로그인 한 것으로 확인했습니다).


1
이것이 바로 내 문제였습니다! 프로덕션에 배포 할 때 문제가 발생하여 서버 자체에서 Gmail에 로그인 한 후 다시 작동하기 시작합니다.
ThisGuy 2016 년


9

같은 문제가 있었지만 바이러스 보호가 발신 "스팸"이메일을 차단하고있는 것으로 나타났습니다. 이 기능을 끄면 포트 587을 사용하여 GMail을 통해 SMTP 이메일을 보낼 수있었습니다.


Windows Defender를 비활성화하고 작동하기 시작했습니다.
MorioBoncz

9

여기에 다른 작업이 없으면 타사 응용 프로그램에서 Gmail 계정에 액세스하도록 허용해야 할 수도 있습니다. 이것은 내 문제였다. 액세스를 허용하려면 다음을 수행하십시오.

  1. Gmail 계정에 로그인하십시오.
  2. 이 페이지를 방문하십시오 https://accounts.google.com/DisplayUnlockCaptcha 하고 버튼을 클릭하여 액세스를 허용하십시오.
  3. https://www.google.com/settings/security/lesssecureapps 페이지를 방문 하여 덜 안전한 앱에 대한 액세스를 활성화 하십시오 .

이것은 다른 누군가에게 효과가 있기를 바랍니다.


8

eglasius가 일치하는 enableSsl설정 이 없다고 언급했기 때문에 어떤 .NET 버전이 필요한지 잘 모르겠습니다 (.NET 4.0을 사용하고 있지만 .NET 2.0 이상에서 작동한다고 생각합니다). 나 (그리고 당신은 어떤 프로그래밍 구성을 사용할 필요가 없습니다) :

<system.net>
  <mailSettings>
    <smtp from="myusername@gmail.com" deliveryMethod="Network">
      <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" password="password" userName="myusername@gmail.com"/>
    </smtp>
  </mailSettings>
</system.net>

https://mail.google.com/mail/?shva=1#settings/fwdandpop : Gmail 계정에서 먼저 POP 또는 IMAP을 활성화해야 할 수도 있습니다.

먼저 일반 메일 클라이언트로 시도해 보는 것이 좋습니다.



안녕하세요 Eglasius ... 감사합니다. 이상하게는 4.0 이전의 프로그래밍 방식 만 있습니다. 우리 모두 지금은 잊어 버린 것 같아요 :)
Wiebe Tijsma

6

@Andres Pompiglio : 그렇습니다. 비밀번호를 한 번 이상 변경해야합니다.이 코드는 제대로 작동합니다.

//Satrt Send Email Function
public string SendMail(string toList, string from, string ccList,
    string subject, string body)
{

    MailMessage message = new MailMessage();
    SmtpClient smtpClient = new SmtpClient();
    string msg = string.Empty;
    try
    {
        MailAddress fromAddress = new MailAddress(from);
        message.From = fromAddress;
        message.To.Add(toList);
        if (ccList != null && ccList != string.Empty)
            message.CC.Add(ccList);
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;
        // We use gmail as our smtp client
        smtpClient.Host = "smtp.gmail.com";   
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential(
            "Your Gmail User Name", "Your Gmail Password");

        smtpClient.Send(message);
        msg = "Successful<BR>";
    }
    catch (Exception ex)
    {
        msg = ex.Message;
    }
    return msg;
}
//End Send Email Function

그리고 다음을 사용하여 함수를 호출 할 수 있습니다.

Response.Write(SendMail(recipient Address, "UserName@gmail.com", "ccList if any", "subject", "body"))

SMTP 서버에 보안 연결이 필요하거나 클라이언트가 인증되지 않았습니다. 서버 응답은 다음과 같습니다. 5.5.1 인증 필요. 자세히 알아보기
Savas Adar

6

회사 VPN 연결을 사용하고있었습니다. 애플리케이션에서 이메일을 보낼 수없는 이유입니다. VPN에서 연결을 끊으면 작동합니다.


5

또한 로그인에 사용한 계정이 어떤 이유로 Google에 의해 비활성화되었음을 발견했습니다. 비밀번호를 재설정하면 (이전과 동일하게) 이메일을 제대로 보낼 수있었습니다. 5.5.1 메시지도 받고있었습니다.


5

나는 또한 많은 솔루션을 시도했지만 작동하도록 약간 변경했습니다.

host = smtp.gmail.com
port = 587
username = email@gmail.com
password = password
enabledssl = true

smtpclient 위의 매개 변수는 Gmail에서 작동합니다.


5

나는 같은 오류가 발생했으며 위의 해결책 중 어느 것도 도움이되지 못했습니다.

내 문제는 원격 서버에서 코드를 실행하고 있었고 gmail 계정에 로그인하는 데 사용한 적이 없다는 것입니다.

원격 서버에서 브라우저를 열고 거기에서 Gmail에 로그인했습니다. 새로운 위치이기 때문에 본인인지 확인하기 위해 보안 질문을했습니다. 보안 검사를 수행 한 후 코드를 통해 인증 할 수있었습니다.



4

이 같은 오류 ( "SMTP 서버에 보안 연결이 필요하거나 클라이언트가 인증되지 않았습니다. 서버 응답 : 5.5.1 인증 필요. 자세히 알아보기" )가 발생하여 잘못된 비밀번호를 사용하고 있음을 알게되었습니다. 로그인 자격 증명을 수정하여 올바르게 보냈습니다.

나는 이것이 늦었다는 것을 알고 있지만 아마도 이것은 다른 누군가를 도울 것입니다.


4

내가 찾은 또 다른 것은 암호를 한 번 이상 변경해야한다는 것입니다. 보안 수준의 비밀번호를 사용하십시오 (비밀번호, 123456 등의 사용자를 사용하지 마십시오).


4

또 다른 가능한 해결책입니다. IMAP을 통해 Gmail에 연결하는 데 비슷한 문제가 발생했습니다. 내가 찾은 모든 솔루션을 시도한 후에 여기 및 다른 곳에서 읽게 될 것입니다 (예 : IMAP 사용, https://accounts.google.com/b/0/displayunlockcaptcha 및 그래서) 실제로 새 Gmail 계정을 한 번 더 설정했습니다.

내 원래 테스트에서 내가 만든 첫 번째 Gmail 계정은 기본 Gmail 계정에 연결되었습니다. 이로 인해 Google이 잘못된 계정을 참조하는 경우 비정상적인 동작이 발생했습니다. 예를 들어 https://accounts.google.com/b/0/displayunlockcaptcha를 실행하면 하면 목적을 위해 만든 계정이 아닌 기본 계정이 열립니다.

따라서 새 계정을 만들고 기본 계정에 연결하지 않았을 때 위의 모든 적절한 단계를 수행 한 후 제대로 작동한다는 것을 알았습니다.

나는 이것을 아직 확인하지 않았지만 (즉, 재생산) 분명히 나를 위해 그것을했다 ... 도움이되기를 바랍니다.


4
  1. 먼저 Gmail 계정 설정을 확인하고 "보안 수준이 낮은 앱에 액세스"에서 설정 여기에 이미지 설명을 입력하십시오

Gmail과 같은 안전한 앱을 사용하여 계정에 액세스하는 것이 좋습니다. Google이 만든 모든 앱은 이러한 보안 표준을 준수합니다. 반면에 덜 안전한 앱을 사용하면 계정이 취약해질 수 있습니다. 더 알아보기.

  1. 세트

    smtp.UseDefaultCredentials = false;

    전에

    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);

4

이러한 오류에는 하나 이상의 이유가 있습니다.

  • 로컬 시스템에서 Gmail (또는 다른 경우)으로 로그인하십시오.

  • 또한 덜 안전한 앱을 확인하고 "켜기"로 설정하십시오. 여기는 GMAIL 링크입니다. https://www.google.com/settings/security/lesssecureapps

  • 이메일 코드에서 EnableSsl을 확인하고 true로 설정하십시오.

    smtp.EnableSsl = true;
  • 또한 현재 사용중인 포트를 확인하십시오. 25는 Global이지만 587과 같은 다른 사람도 확인할 수 있습니다. 여기서 확인하십시오. 모든 SMTP 통신이 25 회 이상 발생합니까?

  • 원격 상태 인 경우 : 위 의 Vlad Tamas 의 답변을 확인하십시오 .


덜 안전한 앱 설정을 사용하지 않으려면 어떻게 다른 전자 메일 클라이언트 가이 작업을 수행합니까?
user734028

3

포트 465를 통해 연결할 수도 있지만 System.Net.Mail 네임 스페이스의 일부 제한으로 인해 코드를 변경해야 할 수도 있습니다. 네임 스페이스는 암시 적 SSL 연결 기능을 제공하지 않기 때문입니다. 이것은 http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx 에서 논의되며 다른 토론에서 CDO (Collaborative Data Object)를 사용하는 방법에 대한 예를 제공했습니다 ( 모든 포트에서 C # .Net 오류를 통한 GMail SMTP ).


3

이 문제가 해결되었습니다. 분명히 그 메시지는 여러 가지 오류 유형으로 사용됩니다. 내 문제는 내가 보낸 최대 500 개의 메일에 도달했다는 것입니다.

계정에 로그인하여 수동으로 메일을 보내십시오. 한도에 도달하면 알려줍니다



2
smtp.Host = "smtp.gmail.com"; //host name
smtp.Port = 587; //port number
smtp.EnableSsl = true; //whether your smtp server requires SSL
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;

1

Gmail 비밀번호를 변경하고 다시 시도하면 그 후에 작동합니다.

이유를 모르지만 호스팅을 변경할 때마다 비밀번호를 변경해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.