문제

표준 Google Apps 계정이 있습니다. Google Apps를 통해 사용자 정의 도메인을 설정했습니다. Gmail 인터페이스를 사용할 때 Google Apps를 통해 성공적으로 이메일을 보내고받을 수 있습니다. 그러나 코드를 통해 이메일을 보내고 싶습니다. 이것을 시도하기 위해 다음 코드를 시도해 왔습니다.

MailMessage mailMessage = new MailMessage();
mailMessage.To.Add("someone@somewhere.com");
mailMessage.Subject = "Test";
mailMessage.Body = "<html><body>This is a test</body></html>";
mailMessage.IsBodyHtml = true;

// Create the credentials to login to the gmail account associated with my custom domain
string sendEmailsFrom = "emailAddress@mydomain.com";             
string sendEmailsFromPassword = "password";
NetworkCredential cred = new NetworkCredential(sendEmailsFrom, sendEmailsFromPassword);

SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);
mailClient.EnableSsl = true;
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mailClient.UseDefaultCredentials = false;
mailClient.Timeout = 20000;
mailClient.Credentials = cred;
mailClient.Send(mailMessage); 

보내기 메소드에 도달하면 다음과 같은 예외가 발생합니다.

"SMTP 서버에는 안전한 연결이 필요하거나 클라이언트가 인증되지 않았습니다. 서버 응답은 다음과 같습니다. 5.5.1 인증이 필요했습니다."

Google을 통해 사용자 정의 도메인을 통해 이메일을 어떻게 보내나요?

감사!

도움이 되었습니까?

해결책

코드의 모든 SMTP 설정을 하드 코딩 할 필요가 없습니다. 대신 web.config에 넣으십시오. 이렇게하면 필요한 경우 이러한 설정을 암호화하고 응용 프로그램을 다시 컴파일하지 않고도 즉시 변경할 수 있습니다.

<configuration>
  <system.net>
    <mailSettings>
      <smtp from="example@domain.com" deliveryMethod="Network">
          <network host="smtp.gmail.com" port="587"
              userName="example@domain.com" password="password"/>
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

이메일을 보낼 때 종료 SMTPClient에서 SSL을 활성화합니다.

var message = new MailMessage("navin@php.net");
// here is an important part:
message.From = new MailAddress("example@domain.com", "Mailer");
// it's superfluous part here since from address is defined in .config file
// in my example. But since you don't use .config file, you will need it.

var client = new SmtpClient();
client.EnableSsl = true;
client.Send(message);

Gmail에서 인증하려는 동일한 이메일 주소에서 이메일을 보내야합니다.

메모: .NET 4.0부터 코드로 설정하는 대신 enableSsl = "true"를 web.config에 삽입 할 수 있습니다.

다른 팁

이것이 제가 WPF 4에서 사용하는 것입니다

SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("sender_email@domain.tld", "P@$$w0rD");
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;

try {
    MailAddress
        maFrom = new MailAddress("sender_email@domain.tld", "Sender's Name", Encoding.UTF8),
        maTo = new MailAddress("recipient_email@domain2.tld", "Recipient's Name", Encoding.UTF8);
    MailMessage mmsg = new MailMessage(maFrom.Address, maTo.Address);
    mmsg.Body = "<html><body><h1>Some HTML Text for Test as BODY</h1></body></html>";
    mmsg.BodyEncoding = Encoding.UTF8;
    mmsg.IsBodyHtml = true;
    mmsg.Subject = "Some Other Text as Subject";
    mmsg.SubjectEncoding = Encoding.UTF8;

    client.Send(mmsg);
    MessageBox.Show("Done");
} catch (Exception ex) {
    MessageBox.Show(ex.ToString(), ex.Message);
    //throw;
}

방화벽과 안티 바이러스를 살펴보십시오. 이 소름 끼치는 것들이 이메일을 보내는 응용 프로그램을 차단하는 경향이 있습니다. 나는 McAfee Enterprise를 사용하고 있으며 Bazar.exe 및 Bazar.vshost.exe의 경우 Bazar와 같은 실행 가능 이름을 추가해야합니다. 이메일을 보낼 수 있습니다 ...

포트를 465로 변경하십시오

아무것도 할 필요가 없습니다. 현재 계정에 처음 로그인하고 지침을 따르십시오.

문제가 해결됩니다. Google Apps에서 계정을 생성했지만 로그인하지 않았기 때문에 발생합니다. 로그인하고 지침을 따르고 시도해보십시오.

내 코드는 port = 587에서 tls를 사용하여 smtp.google.com에 연결하고 있습니다 (SSL은 포트 465 여야합니다).

SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
NetworkCredential credentials = new NetworkCredential();
credentials.UserName = "INSERT EMAIL";
credentials.Password = "INSERT PASSWORD";
smtp.Credentials = credentials;

MailAddress addressFrom = new MailAddress(credentials.UserName);
MailAddress addressTo = new MailAddress("INSERT RECIPIENT");
MailMessage msg = new MailMessage(addressFrom, addressTo);
msg.Subject = "SUBJECT"
msg.Body = "BODY";

smtp.Send(msg);

G Suite 계정에서 이러한 중요한 전제 조건을 주목하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top