BLOG main image

분류 전체보기 (321)
free (36)
영화 (85)
드라마 (21)
게임 (28)
만화/책 (34)
개발 (46)
IT (68)
연예 (3)
Visitors up to today!
Today hit, Yesterday hit
TETRIS
rss
2007. 3. 15. 21:07

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)

이렇게 하면 간단히 해결됩니다.