2022. 1. 11. 19:50ㆍ귤 IT 코딩
결론부터 이야기하자면,
rfc2822에 따라 HTML은 한 줄에 998자까지 제한한다.
따라서 998을 넘으면 자동으로 !를 붙여 줄을 나눈다.
참조: https://www.ietf.org/rfc/rfc2822.txt
(rfc2822 2.1.1. Line Length Limits)
메일 전송하는 코드를 수정한 후 희한하게 메일 온 걸 보면 느낌표가 랜덤하게 붙는 현상이 나타났다.
붙는 위치도 매번 다르고 어떤 메일은 정상적으로 올 때도 있었다!!
HTML에서 느낌표가 추가되는 것 같은데 내가 수정한 건 c파일이지 HTML이 아니라서 더욱 혼란스러웠다.
OS 버전 차인로 나는 오륜가 싶어 버전 스펙도 다 읽어봤지만 관련된 내용도 없었다.
Sendmail의 문젠가 싶어서 mailx로도 바꿔 전송해봤지만 다른 게 없었다.
크롬 f12를 눌러 뜯어봐도 내용 사이에 느낌표가 추가된 것만 확인할 수 있었다.
마지막으로 한 방법이 MIME 타입을 벗겨서 html 코드 그대로 메일로 받아보는 방법이었다.
그러니 웬걸! 정상적으로 원래 왔던 이메일의 html에서 특이한 점을 발견했다.
셀을 정의하는 태그인 td를 닫아줄 때 <!/td>로 되어있는 것이다.
다행히 태그 안에 느낌표는 묵인되어 정상적으로 보였지만 HTML에 넣어지는 내용의 길이에 따라 느낌표가 내용 사이에 들어가기도 해서 보여질 때도 있고 안 보일 때도 있던 것이었다..!
그럼 왜 HTML을 수정하지도 않았는데 전에는 정상적이었지만 c코드 수정 후 998자가 넘은 것일까?
C 코드에서 html을 string으로 만들어 보내주도록 했는데 들여쓰기 안되어 있던 부분까지 자동 들여쓰기가 되면서 HTML 태그 사이사이가 들여쓰기 되어 공백이 줄마다 많아지면서 998이 넘은 것이다.
그래서 들여쓰기를 모두 줄여주고, style tag를 간략화했다.
또 다른 방법으로는 css를 추가해 HTML head에 class로 style을 정의해주고
body 부분에서 클래스만 선언해주었다.
(다만, style tag는 해킹 위험이 있어 도메인에 따라 무시하는 곳도 있다)
'귤 IT 코딩' 카테고리의 다른 글
[C언어] KSC5601(EUC-KR)만 입력 받고 나머지는 공백으로 채우기 (0) | 2022.03.02 |
---|---|
KSC5601, EUC-KR, UTF-8 Differences (0) | 2022.02.25 |