이메일을 보내려면 다음 코드를 사용하고 있습니다. 코드가 로컬 컴퓨터에서 올바르게 작동합니다. 그러나 프로덕션 서버에서 오류 메시지가 나타납니다.
var fromAddress = new MailAddress("mymailid@gmail.com");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("yourmailid@yourdoamain.com");
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 계정 mymailid@gmail.com에 로그인하려고했습니다. 이 사람은 이메일, 클라이언트 또는 모바일 장치와 같은 응용 프로그램을 사용하고있었습니다.
하이재커가 계정에 액세스하려는 경우 로그인 시도를 방지했습니다. 로그인 시도의 세부 사항을 검토하십시오.
2014 년 1 월 3 일 금요일 13:56:08 UTC IP 주소 : xxx.xx.xx.xxx (abcd.net.) 위치 : Philadelphia PA, PA, USA, PA
이 로그인 시도를 인식하지 못하면 다른 사람이 귀하의 계정에 액세스하려고 할 수 있습니다. 계정에 로그인하고 비밀번호를 즉시 재설정해야합니다.
암호를 재설정
귀하의 계정이고 계정에 액세스하는 데 문제가있는 경우 http://support.google.com/mail?p=client_login에 나열된 문제 해결 단계를 완료
하십시오.감사합니다. Google 계정 팀
답변
일반적으로 다른 시간대 나 IP 주소 컴퓨터에서 로그인을 시도 할 때 발생합니다. 사용중인 프로덕션 서버와 메일 ID가 서로 다른 시간대에 있습니다. 다음 두 가지 솔루션 중 하나를 선택하십시오.
1) 원격 액세스를 통해 프로덕션 서버에 로그인하고 자격 증명으로 gmail에 한 번 로그인하십시오. 확인을 요청하고 확인한 후 로그 아웃합니다.
답변
코드에서 메일을 보내려고 할 때 “SMTP 서버에 보안 연결이 필요하거나 클라이언트가 인증되지 않았습니다. 서버 응답 : 5.5.1 인증 필요”오류가 다음과 같은 경우에 발생할 수있는 오류보다 발견되었습니다.
사례 1 : 비밀번호가 잘못되었을 때
사례 2 : 일부 앱에서 로그인하려고 할 때
사례 3 : 시간대 / 도메인 / 컴퓨터 이외의 도메인에서 로그인을 시도 할 때
(코드에서 메일을 보낼 때 대부분의 경우에 해당)
각각에 대한 해결책이 있습니다
사례 1에 대한 해결책 : 올바른 비밀번호를 입력하십시오.
사례 2의 해결 방법 1 : 다음 링크 ( https://www.google.com/settings/security/lesssecureapps) 에서 보안 설정으로 이동하여 덜 안전한 앱을 활성화 하십시오 . 모든 앱에서 로그인 할 수 있습니다.
사례 2의 솔루션 2 🙁 https://stackoverflow.com/a/9572958/52277 참조 ) 2 단계 인증 (일명 2 단계 인증)을 활성화 한 다음 애플리케이션 비밀번호를 생성합니다. 새로 생성 된 비밀번호를 사용하여 SMTP를 통해 인증하십시오.
사례 3에 대한 해결 방법 1 : (이것이 도움이 될 수 있습니다) 활동을 검토해야합니다. 그러나 최신 보안 표준으로 인해 활동을 검토하는 것은 도움이되지 않습니다. 링크는 유용하지 않습니다. 아래의 경우를 시도하십시오.
사례 3에 대한 해결 방법 2 : 프로덕션 서버 어딘가에 코드를 호스팅하고 프로덕션 서버에 액세스 할 수있는 경우 프로덕션 서버에 원격 데스크톱 연결을 수행하고 프로덕션 서버의 브라우저에서 한 번 로그인하십시오. 이것은 구글에 로그인하기 위해 excpetioon을 추가하고 코드에서 로그인 할 수 있습니다.
그러나 프로덕션 서버에 액세스 할 수 없으면 어떻게해야합니까?
해결책을 시도 3
사례 3의 해결책 3 : Google 계정에 다른 시간대 / ip에서 로그인을 활성화해야합니다.
이렇게하려면 링크 https://g.co/allowaccess를 따르고 계속 버튼을 클릭하여 액세스를 허용 하십시오 .
그리고 그게 다야. 여기 요 이제 어느 컴퓨터에서나 앱을 통해 Google 계정에 로그인 할 수 있습니다.
답변
보안 문제인 Gmail은 기본적으로 맞춤 애플리케이션에서 이메일 계정에 액세스 할 수 없도록합니다. 애플리케이션에서 로그인을 수락하도록 설정할 수 있습니다.
이메일에 로그인 한 후 여기를 클릭하십시오
다음 페이지로 이동합니다
답변
오늘 여기에서 모든 솔루션을 시도하면서 몇 시간을 보낸 후에도 여전히이 정확한 오류를 극복 할 수 없었습니다. 나는 이런 식으로 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, or the DeliveryMethod
온 의존 Credentials
내가 비록이었다 하나 알아 내기 위해 모든 테스트를하지 않았다 … 첫번째 존재 세트 .
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
}
앞으로 다른 사람이 두통을 덜어 줄 수 있기를 바랍니다.
답변
https://myaccount.google.com/lesssecureapps 에서 ‘보안 수준이 낮은 앱 허용’을 켜야합니다.
답변
안녕하세요. 같은 문제가있었습니다.
내가 해결하기 위해 한 일. 덜 안전한 앱을 켜는 것입니다. 내 Gmail 계정에 연결 한 후 https://www.google.com/settings/security/lesssecureapps 링크에 들어갔습니다
그런 다음 안전한 앱을 켜고 작동했습니다. 그것은 또한 위에 말했다
답변
지금이 오류가 발생하는 이전 코드가 있습니다. 비밀번호에 문제가 없습니다. 메시지를 base64로 변환 할 필요가 없습니다. 판명, 나는 다음을 수행해야합니다.
- 2 단계 인증 끄기
- “보안 수준이 낮은 앱 허용”을 ON으로 설정
- 프로덕션 서버에서 Gmail 계정에 로그인
- 로그인 활동을 승인하려면 여기 로 이동 하십시오.
- 프로덕션 서버에서 앱 실행
작업 코드
public static void SendEmail(string emailTo, string subject, string body)
{
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("youremail@gmail.com", "secretpassword"),
EnableSsl = true
};
client.Send("youremail@gmail.com", emailTo, subject, body);
}