-
mail send issue) nate email 비정상적인 url 생성개발자의 공부는 은퇴까지 필수다/javascript 2023. 5. 23. 20:32
기능: pdf 파일 링크를 포함하고 있는 html 형식의 이메일을 보내주는 기능
이슈: 다른 이메일로 보낼 때는 문제가 없었지만, nate 에서만 수신한 메일의 url을 클릭 시 정상적으로 접근이 안되는 문제
메일 url을 복사해보니 아래와 같은 url 이 있었다.
https://mail3.nate.com/&#-2F;&#-2F;callback.io&#-2F;settlement&#-2F;statement&#-2F;settlement.pdf
대충 인코딩이 잘못된 문제 같긴 하지만, - 라는 것은 잘못된 인코딩 정보에 쓰이는 것 같았다. (&#-2F)
그리고 저 자리에 들어가야하는 것은 슬래쉬(/)이다.
처리과정
1. 메일사이트엔 대부분 원문보기가 기능이 있다. 잘못온 메일의 원문보기 기능을 이용해 실제 텍스트가 어떻게 오는건지 확인해본다.
(원문보기는 base64로 오기 때문에 https://www.base64decode.org/ 와 같은 사이트에서 디코딩 한다.)
확인해보니 https://callback... 이런식으로 오더라. &#-2F 는 / 가 잘못 출력된 정보였다.2. 해당 문자로 검색해보니 /의 Hex Code 인 것 확인
3. db 에서 가져오는 html 태그 안의 슬래시들은 정상적으로 출력되는 걸 확인했고, 따라서 이메일에 binding 하는 부분만 확인해본다. (내용을 각 정보에 따라 다르게 채우기 위해 머스태시로 replace 하는 부분이 소스에 있었다.)
4. npm Mustache 를 사용하고 있는데,
const result = Mustache.render('///html{{&test}}', { test: 'http://test.com' }); console.debug('result::', result); //실행결과: result:: ///htmlhttp://test.com //잡았다 요놈..
5. npm mustache 의 기능을 살펴보면, html 이스케이프를 사용하고 싶지 않다면 &를 추가하라는 내용을 확인했다.
it('', () => { const result = Mustache.render('///html{{&test}}', { test: 'http://test.com' }); console.debug('result::', result); //출력: result:: ///htmlhttp://test.com }) //해결 !
허무했다..email template 의 머스태시 부분만 수정해주고 끝났다.
'개발자의 공부는 은퇴까지 필수다 > javascript' 카테고리의 다른 글
[javascript] 여러개 delimiter 여러가지로 split 하기 (0) 2023.07.10 [javascript] object 조건에 따라 특정 키 추가하기 (0) 2023.01.19 [javascript] new Error ('', {cause: {...}}) Expected 0-1 arguments, but got 2. (0) 2022.11.19 객체에서 특정 키만 뽑아서 새로운 객체 만들기 (0) 2022.09.08 이미지 파일 사이즈 리사이징 (0) 2022.05.09