2012-12-05 5 views
0
내가 UTF8 코딩이 이메일 메시지를 보낼

에 이메일을 보내어떻게 .. UTF8

내가 내가 UTF8이를 보낼 수있는이

include 'functions.php'; 
    $name = stripslashes($_POST['name']); 
    $email = trim($_POST['email']); 
    $subject = stripslashes($_POST['subject']); 
    $message = stripslashes($_POST['message']); 
    $cap=strtoupper($_POST['cap']); 

    $error = ''; 


$mail = mail(WEBMASTER_EMAIL,$subject,$message, 
     "From: ".$name." <".$email.">\r\n" 
     ."Reply-To: ".$email."\r\n" 
     ."X-Mailer: PHP/" . phpversion()); 

을 위해 할 수있는?

+0

mail()은 메일 서버와 직접 인터페이스하는 라이브러리 중 하나만 사용하면 안됩니다. [Phpmailer] (http://phpmailer.worxware.com/)의 [Swiftmailer] (http://swiftmailer.org/) –

답변

2

당신과 같이, 이메일 헤더에 인코딩을 지정할 수 있습니다 쉽게 손상됩니다 때문에

$mail = mail(WEBMASTER_EMAIL,$subject,$message, 
     "From: ".$name." <".$email.">\r\n" 
     ."Reply-To: ".$email."\r\n" 
     ."Content-type: text/html; charset=UTF-8\r\n" 
     ."X-Mailer: PHP/" . phpversion()); 
1

PHP의 utf8_encode 함수를 사용할 수 있습니다. 좋아요 :

이렇게하면 $ message 변수에 인코딩 된 utf8 문자열이나 그 밖의 다른 문자가 저장됩니다.

편집 : 당신이 swiftmailer 라이브러리를 사용하는 경우

, 그것은 UTF8 인코딩을 기본값으로 사용합니다.

+0

메시지를 인코딩하는 것보다 약간 더 효과적 일 수 있습니다. 다른 인수와 메일 헤더도 인코딩해야합니다. 다음은'mail()'[documentation page] (http://php.net/manual/en/function.mail.php)에있는 주석의 예입니다 :'$ from_user = "=? UTF-8? B? ".base64_encode ($ from_user)."? = ";'. 사용자 공헌 노트에는 몇 가지 예가 있습니다. – sierrasdetandil

+0

참. 그리고 다시, 좋은 메일 링 라이브러리를 사용하면 자주 당신을 위해 그 일들을 돌볼 것입니다. – Pjottur

0

당신은, 헤더에있는 UTF-8 인코딩을 설정하고 또한 주제를 인코딩 할 필요가있다. 나는 개인적으로 보낸 사람의 주소를 설정하는 기능을 추가하는 자체 함수를 만듭니다.

function mail_utf8 ($to, $subject='', $message='', $from='', $header='') { 
    if (preg_match("/\<html.*\>/i", $message)) 
    $content_type = "html"; 
    else 
    $content_type = "plain"; 

    $header .= "\nMIME-Version: 1.0"; 
    $header .= "\nContent-type: text/$content_type; charset=UTF-8"; 
    if ($from) 
    $header .= "\nFrom: ".$from; 
    mail($to, "=?UTF-8?B?".base64_encode($subject)."?=", $message, trim($header)); 
} 
+0

추신 :이 질문은 5 개월 전이지만 전자 메일을 보내려고 할 때마다 이와 같은 기능을 쓰고 싶지는 않습니다. 그리고 아마도 다른 사람도 그것을 사용할 것입니다. –