본문 바로가기

Story/php

utf-8 메일 발송

반응형


$to = 'to@to.com';
$toName = '보내는사람';
$toName = mb_encode_mimeheader($toName, "UTF-8", "B");

$from  = 'from@from.net';
$fromName = '받는사람';
$fromName = mb_encode_mimeheader($fromName, "UTF-8", "B");

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-Type: text/plain; charset=UTF-8' . "\r\n";
$headers .= 'Content-Transfer-Encoding: 8bit' . "\r\n";
$headers .= 'Content-Disposition: inline' . "\r\n";
$headers .= 'To: ' .$toName. "<$to>\r\n";
$headers .= 'From: ' .$fromName. "<$from>\r\n";

$subject = '제목';
$subject = mb_encode_mimeheader($subject, "UTF-8", "B");
$body = '내용';

mail($to, $subject, $body, $headers);



위와 같은 방식으로 메일을 보내게 되는대 이름이나 제목이 깨지는 경우가 있는대 이런경우때문에 mb_encode_mimeheader 함수를 사용하게 된다.
하지만 일부서버의 경우 이 함수를 지원하지 않을때

$preferences = array(
    "input-charset" => "UTF-8",
    "output-charset" => "UTF-8",
    "line-length" => 76,
    "line-break-chars" => "\n"
);
$preferences["scheme"] = "B";

$subject = substr(iconv_mime_encode("",$subject, $preferences),1);

와 같이 iconv 함수를 사용하여 대신한다.
이 함수는 "이름: 변환내용..." 형식으로 반환되기 때문에 이름부분을 생략하고 : 를 없애기 위해 substr 을 사용하였다.

반응형