티스토리 뷰


http://blog.naver.com/znmee/70025944364


기존의 EUC-KR 웹사이트를 UTF-8 로 리뉴얼 하면서
이래저래 고생도 많았고, 더불어 배운 것도 많았다.

그 중에서 꽤 많은 삽질을 하게 했던 부분이 바로
센드메일로 메일 발송시 제목이나 보낸 사람 이름이
깨져서 나오는 것이었다.

1시간이 넘게 자료를 찾으며 실험을 거듭하여
성공하게 되었다.

통상적으로 수신자 또는 송신자의 이메일 주소만 기입하면
수신자와 송신자 부분에는 깨지지 않고 발송은 된다.

하지만, 송신자와 수신자 또한 한글 이름을 함께 넣어서
발송해 보고 싶었다.

코드는 아래와 같고
UTF-8 인코딩 파일로 본 포스트에 첨부해 놓았다.

<?php
error_reporting
(E_ALL);
// 에러 검증 모드
$charset='UTF-8';
// 문자셋 : UTF-8
$subject='메일 제목입니다.';
// 제목
$toName='김수신';
// 받는이 이름
$toEmail='receive@mail.com';
// 받는이 이메일주소
$fromName='이발신';
// 보내는이 이름
$fromEmail='send@mail.com';
// 보내는이 이메일주소
$body='< html><body><p style="font:normal bold 30px/1.2 Gulim; color: #006600; text-align: center;">UTF-8로 보낸 메일입니다.</p></body>< /html>';
// 메일내용
$encoded_subject="=?".$charset."?B?".base64_encode($subject)."?=\n";
// 인코딩된 제목
$to= "\"=?".$charset."?B?".base64_encode($toName)."?=\" <".$toEmail.">" ;
// 인코딩된 받는이
$from= "\"=?".$charset."?B?".base64_encode($fromName)."?=\" <".$fromEmail.">" ;
// 인코딩된 보내는이
$headers="MIME-Version: 1.0\n"
.
"Content-Type: text/html; charset=".$charset."; format=flowed\n"
.
"To: ". $to ."\n"
.
"From: ".$from."\n"
.
"Return-Path: ".$from."\n"
.
"Content-Transfer-Encoding: 8bit\n";
// 헤더 설정
$mail = mail ( $to , $encoded_subject , $body , $headers );
// 메일 보내기
if ( $mail
) {
echo (
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="kr" lang="kr">
<head profile="http://www.w3.org/2000/08/w3c-synd/#">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<h1>메일 발송 완료</h1>
</body>
</html>'
) ;
}
?>

핵심은 '인코딩' 부분과 '헤더' 부분이다.
위와 같이(공백까지도 동일하게) 해 주면 그 어떤 부분도 깨지지 않고
메일이 잘 들어간다.

아래는 테스트 결과다.
1. 일반 웹호스팅의 POP메일을 아웃룩익스프레스로 받았을 때 정상 수신
2. Gmail 정상 수신
3. Paran(Hanmir) 정상 수신
4. Naver 정상 수신
5. Nate 정상 수신
※ 한메일(hanmail,daum) 메일 자체가 들어가지 않음.

역시 똥배짱 다음 한메일이다.
스팸메일함에도 들어가지 않는다.

한메일은 그냥 포기하련다.
이 글을 보시는 분들,
웬만하면 한메일 쓰지 마시기를...
빈대 잡으려다 초가삼간 태우는 한메일은
메일 서비스의 기본이 안돼있다.

'dev > php' 카테고리의 다른 글

PHP MySQLi Database Class  (1) 2015.02.16
Mongodb :: createDBRef, getDBRef  (0) 2011.11.01
트위터 글쓰기  (0) 2011.05.03
ARRAY to XML  (2) 2011.03.25
Codeigniter Wiki ::: Special:Titles  (0) 2011.02.22
공지사항