본문 바로가기
IT기술(코딩)

smtp 501 5.5.4 IP ADDRESS: EHLOerror how solve this error smtp 메일 송신 501 에러 해결 방법.

by 크리에이트매이커 2022. 8. 15.
반응형

안녕하세요 여러분 크리에이트 메이커 입니다~~

 

저번 포스팅에 이어 메일 송신 프로그램을 완성했습니다~

 

제가 또 다른 난관에 봉착한 부분은 바로 stmp 501 5.5.4 ip address 에러 인데요!!

구글을 보니 501에러에 봉착한 사람들이 꽤있더라구요. 근데 제대로된 답변이 없는것 같아서

제가 오류 원인 파악하고 조칩 방법도 여럿 시도하면서 방법을 찾았습니다.

 

자 각설하고, 왜 저 에러가 나오는지 확인해보겠습니다.

제 초기 라이브러리 코드는,

 

if( Send( "EHLO " , 250 ) == false )
{
printf("r3 250\n");
CLog::Print( LOG_ERROR, "%s EHLO error", __FUNCTION__ );
WSACleanup();
Close();
return false;
}

이 구문에서 에러가 걸렸습니다.

 

저는 깃허브에서 받은 라이브러리기 때문에, 그대로 쓰면 될줄 알았는데 에러가 자꼬 나서 구석구석 조사해본 겨결과

 

if( Send( "EHLO " , 250 ) == false )
저 빨간 부분이 문제였습니다.

 

Send 함수에는 송신하는 명령어가 들어가는데, 그곳에 EHLO 라는 명령어가 들어갑니다.

이때 EHLO에는 메일서버의 도메인도 같이 포함하는 명령어를 주어야 하는데, 제공된 라이브러리는 그냥 EHLO만 덩그러니 써있던 겁니다. 그래도 함수안에서 뭔가 처리하겠지 했는데, 전혀 그런게 없어서 코드를 수정했습니다.

 

저부분에 들어가야할 명령어는

"EHLO 메일서버도메인" 입니다. 

저는 그래서 일단

 

if( Send( "EHLO smtp.gmail.com " , 250 ) == false )
{
printf("r3 250\n");
CLog::Print( LOG_ERROR, "%s EHLO error", __FUNCTION__ );
WSACleanup();
Close();
return false;
}

이렇게 코드를 간단히 수정하고 에러를 벗어날 수 있었습니다.

 

즉 해당 에러는 명령어 에러였고 , 해당 명령어의 추가 값? 이 안들어가서 생기는 에러였습니다.

그 추가값은 메일서버 도메인이구요!!

 

그럼 여러분 제글을 보고 작은 문제를 해결하시길 바랄게요~~ 

 

안녕~

 

제가 만든 프로그램 스샷입니당

간단하죠? 이걸로 메일을 보낼 수 있습니당~

곧 첨부파일도 넣는 부분을 추가할 예정입니다.

반응형