GMail 의 경우 국내 대표적인 웹 메일들과 달리 기본 문자셋이 UTF-8 입니다. 사실 테터툴즈도 그렇고, 최근의 경향은 UTF-8 을 기본으로 하는 경우가 많은데, 그렇다고 무작정 UTF-8 로 인코딩을 해서 보낼 경우 EUC-KR 을 사용하는 다른 웹 메일들이 수신을 못하는 상황이 발생을 하죠. (아웃룩에서도 이상하게 나오게 되구요)
뭐, 최근의 메일 서비스들은 이 문제를 대부분 해결한 상태라 문제 없이 사용할 수 있습니다만, SMTP 로 메일링 서비스를 제작하다보니 이 문제가 발목을 잡았습니다.
일단 해결 방법은...
"보내는 사람 이름에 한글을 쓰지 마세요-_-;" 였습니다만....;
그래도 이거 그냥 두고 볼 수는 없는 없죠. gmail 에서만 보낸 사람 이름에 한글이 아닌 괴상한 문자가 찍히는 건 참을 수 없었습니다. 후;
알고보니 간단했습니다.
메일 헤더에 정확한 케릭터 셋과 인코딩 방식을 입력하고, 제목 및 보낸 사람에도 인코딩을 해주면 되는 것이었습니다. (이것 때문에 이틀간 고생했습니다. 별 인코딩을 다 해봤네요;;)
혹시 같은 문제로 고민 하시는 분이 있을 때 간단히 해결하라고 내용을 공유합니다.
(코드는 파이썬으로 되어 있지만, 다른 언어도 비슷합니다.^^)
# user 는 실제 메일 보내는 ID ( webmaster@msn.com 같은 )
# sender 는 메일 보내는 사람 이름 ( 예를 들어 '김하나' 같은... )
msg = MIMEText(message, _subtype='html', _charset='euc-kr')
msg['Subject'] = '=?euc-kr?B?' + base64.standard_b64encode(subject) + '?='
msg['From'] = '=?euc-kr?B?' + base64.standard_b64encode(sender) + '?=' + '<' + user + '>'
msg['To'] = ', '.join(target)
이렇게 하면 간단히 해결됩니다.
'개발 > 언어' 카테고리의 다른 글
python 3.6 으로 변경 (0) | 2018.04.10 |
---|---|
C++ 을 빛내는 boost 라이브러리, 약간의 아쉬움. (7) | 2012.03.22 |
PHP에서 웹 페이지 내용 또는 헤더 값 가져오는 코드 (0) | 2011.01.10 |
실행파일(exe)의 icon 변경 (ico, exe) (0) | 2010.11.09 |
어셈블러는 배울 가치가 있을까? (2) | 2008.01.10 |