Spring

SMTPSendFailedException: 555 5.5.2 Syntax error

자바니또 2021. 9. 5. 23:54

개요

SpringBoot에서 G-Mail을 SMTP 서버로 하여 JavaMailSender를 사용하려다가 황당한 에러에 직면했다. 분명 Spring 공식문서에서 나와있는 설정과 startTLS, auth 설정까지 마쳤는데 "구문 에러"가 뜬금없이 발생했다.

에러 메시지

555 5.5.2 Syntax error message

 디버깅을 한 결과 javax.mail.Transport.sendMessage()를 실행하다가 발생했고, Gmail SMTP 서버에 보내는 내 서버의 내용 중 어떠한 것을 읽지 못한다는 것을 알았다.

문제의 원인은 내 계정의 '사용자 이름'이 한글이기 때문이었다. 이참에 지난 나의 실수를 반성하며 영어 이름으로 바꾸려 했는데 방법이 생각보다 복잡하다. 

사용자 이름 영어로 변경하기

* 주의 : Windows10 Pro 환경에서 작성하는 포스팅이며, 레지스트리를 변경하는 과정이 있으니 주의해서 진행해야 한다. 문제가 생길 시 역순으로 진행하면 복구할 수 있으니 변경하려는 레지스트리 값은 꼭 백업해야 한다. 

1. 로컬 계정으로 전환

윈도우 잠금화면에서 로그인 시 MS 계정으로 로그인 하는 경우 로컬 계정으로 전환을 해줍니다. 

  1. [WindowKey + I]를 눌러 [설정] 창을 연다. 
  2. [계정]을 눌러 [사용자 정보] 화면으로 넘어간다.
  3. [대신 로컬 계정으로 로그인]을 클릭한다.
  4. 아래의 사진과 같이 버튼이 보이지 않는 경우 그냥 진행한다. 

버튼이 보이지 않는 경우

 

2. 계정 이름 영어로 변경

  1. 제어판 -> 사용자 계정 -> 계정 유형 변경
  2. 변경할 사용자이름을 선택하고 [계정 이름 변경] 클릭
  3. 사용할 영어 이름 입력

3. Administrator 계정 활성화

  1. cmd를 관리자 권한으로 실행한다.
  2. 다음 명령어를 입력한다.
    • net user administrator /active:yes

4. 현재 계정 로그아웃 후 Administrator 계정으로 로그인

* 현재 계정을 로그아웃하지 않으면 액세스 거부가 뜨니 반드시 로그아웃 한다.

5. 사용자 폴더 이름 변경

  1. Administrator 계정으로 로그인해서 들어왔따면 CMD를 열고 다음 명령어를 입력해 사용자 디렉터리 이름을 바꿔준다.
    • ren C:\Users\{이전한글계정이름} {새로운영어계정이름}
    • ex) ren C:\Users\자바니또 javanitto

6. 레지스트리 편집

  1. [windowKey + R] 키를 눌러 [실행]창을 연다.
  2. regedit 을 입력하여 [레지스트리 편집기] 창을 연다.
  3. 다음 경로의 하위 폴더들 중 [ProfileImagePath]파일의 데이터가 'C:\Users\{이전한글계정이름}'인것을 찾아서 'C:\Users\{새로운영어계정이름}'으로 변경한다.

7. Administrator 계정 로그아웃 후, 이름이 변경된 계정으로 로그인

작업이 성공적으로 이루어졌다면 조금 기다리면 원래 바탕화면이 그대로 보인다. 만약 로그인할 수 없다고 나오면서 다시 로그인 해 보라고 나온다면 레지스트리 편집쪽이 잘못되었을 가능성이 크다. 

8. Administrator 계정 비활성화

  1. cmd를 관리자 권한으로 실행한다.
  2. 다음 명령어를 입력해 비활성화 시킨다.
    • net user administrator /active:no

9. netplwiz를 통해 윈도우 10 계정 이름 변경

  1. [windowKey + R] 키를 눌러 [실행]창을 연다.
  2. netplwiz 를 입력하고 엔터를 누른다.
  3. [사용자 탭]에서 이전의 한글계정명이 있다면 클릭 후 [속성]버튼을 누른다.
  4. 전체 이름은 영어로 바뀌어있지만 사용자 이름이 한글 그대로일 것이다. 적용 후 확인버튼을 누른다.

후기

사실 위의 8번까지 해보고 안되서 "SendGrid"를 SMTP 서버로 사용했다. 그러다가 노트북으로 혹시나 해서 gmail 을 SMTP로 하여 돌려보니 성공적으로 작동하는 것을 보고 사용자 계정 문제라는 것을 확신했다. 

문득 IntelliJ의 터미널 창으로 설정된 git CLI 창을 보았는데, 아직 나의 한글계정명이 보이는 것을 보고 9번을 추가적으로 수행했다. 결과는 성공적이었고 나를 위한 박수를 쳤다. 

처음부터 계정을 만들 시 영어로 만들었으면 이런일이 없었을텐데... 아무튼 구글링을 해보아도 자료를 찾기 힘들었고, 나와 같은 한국인이 혹시나 있을까 싶어서 블로그에 남긴다.