2016-11-27 2 views
5

나는 여기에 어쩌면 간단한 문제가 있지만, 왜 그것이 작동하지 않는 지 이해할 수없고, 많은 연구를 해봤고, 많은 예제를 시도했다. 현재 예제를 게시하고있다. 튜토리얼 어디에서 설명 했는가? 해결책이지만, 제 경우에는 작동하지 않습니다. 전자 메일의 제목에 "Ä Ö Ü ß ü"문자가 올바르게 표시되지 않습니다.독일어 문자로 된 PHP 메일 제목

$headers = array(); 
$headers[] = "MIME-Version: 1.0"; 
$headers[] = "Content-type: text/html; charset=utf-8"; 
$headers[] = "From: {$emailfrom}"; 

$to = "[email protected]"; 
$subject = 'Betreff mit Ä, Ö und Ü ß ü'; 
$subject = '=?UTF-8?B?'.base64_encode($subject).'?='; 


$txt = "Hallo Sie haben das gewählt, am ä "; 
mail($to,$subject,$txt,implode("\r\n",$headers)); 

일반적으로 이들은 다른 튜토리얼의 모든 곳에서 작성하지만 이것이 해결책이지만 제 경우에는 작동하지 않습니다. 이유가 무엇입니까? 내 사건에서 달과 관련이 있을지도 모른다. LOL)

+0

에 따라 캐릭터 세트를 사용하는 UTF 사용되는, quoted_printable_encode를 시도? http://php.net/manual/en/function.quoted-printable-encode.php – Zmart

답변

5

,

mb_internal_encoding("UTF-8"); 
$subject = mb_encode_mimeheader($subject,'UTF-8','Q'); 

그것은 인용 - 인쇄에 인코딩 처리됩니다. 그것이 당신의 문제를 해결해야한다 바랍니다.

+0

대단하다. 문제가 야기된다. 어떤 사람들에 대한 지식을 존중하십시오. – UserNameHere

+0

정말 고마워요. – Faisal

1

는 base64로 할 필요는 피사체를 인코딩하지 ... 그냥 다음 잘 작동합니다 :

<?php 

$emailfrom = 'Some Name <[email protected]>'; 

$headers = array(); 
$headers[] = "MIME-Version: 1.0"; 
$headers[] = "Content-type: text/html; charset=utf-8"; 
$headers[] = "From: $emailfrom"; 

$to = "[email protected]"; 
$subject = 'Betreff mit Ä, Ö und Ü ß ü'; 
$txt = "Hallo Sie haben das gewählt, am &#xE4; "; 

mail($to, $subject, $txt, implode("\r\n", $headers)); 

편집 : Gmail에서와 위의 코드를 실행에 표시 헤더의 일부 Gmail 주소 : 동일한 잘못된 출력 수단의 iconv를 참조하시기 바랍니다가있는 경우

Subject: Betreff mit Ä, Ö und Ü ß ü 
X-PHP-Originating-Script: 1000:test.php 
MIME-Version: 1.0 
Content-type: text/html; charset=utf-8 

Hallo Sie haben das gewählt, am &#xE4; 
+0

매우 쉽다면, 예제는 똑같아 보이지 않습니다. https://s22.postimg.org /rwxdtjje9/mail.png 항상 이렇게 보입니다.> Betreff mit , und – UserNameHere

+0

편집 정보에서 의미하는 바를 이해하지 못하지만이 doestic 작업은 이해할 수 없습니다. 아마도 무료 웹 호스팅을 사용하기 때문입니다. 공급자? – UserNameHere

+0

이메일 클라이언트가 헤더에 지정한 문자 세트를 존중하지 않는 것 같습니다. 예제를 사용하는 경우 UTF-8로 인코딩 된 문자열이 포함 된 전자 메일을 보냅니다. 여러 메일 클라이언트에서 피사체가 좋지 않은지 확인하십시오 ... – 1sloc

-1
Try this 
$headers = array(); 
$headers[] = "MIME-Version: 1.0"; 
$headers[] = "Content-type: text/html; charset=utf-8"; 
$headers[] = "From: {$emailfrom}"; 

$to = "[email protected]"; 
$subject = 'Betreff mit Ä, Ö und Ü ß ü'; 
$subject = str_replace(""); 
$subjects = '=?UTF-8?B?'.$subject.'?='; 


$txt = "Hallo Sie haben das gewählt, am &#xE4; "; 
mail($to,$subjects,$txt,implode("\r\n",$headers)); 

()는 PHP에서 그것을 제공 (읽기 인간) 필요로 할 때 당신은 mb_encode_mimeheader를 사용해야 문제 .. 모든 최고의 친구를위한 솔루션 ...

+0

고마워요.하지만 당신의 예는 틀리게 보입니다. 올바른 편지를 보여주지 않습니다. 그림 : https://s22.postimg.org/rwxdtjj9/mail.png 항상 이런 식으로 보입니다 -> Betreff mit , und 이 문제는 어디에서든지 발생합니다. – UserNameHere

1

인코딩을 하나 선택하고 해당 인코딩을 사용하여 HTML 파일을 저장 한 다음 적어도 하나의 방법으로 인코딩을 선언해야합니다. 사용하는 인코딩에 관해서는, 독일인은 보통 ISO/IEC 8859-15를 사용하지만 UTF-8은 모든 종류의 비 ASCII 문자를 동시에 처리 할 수있는 좋은 대안입니다.

첫 번째 방법을 그 8

$headers.="MIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n"; 

두 번째 방법은 독일어 대신 base64_encode의

$headers.= "MIME-Version: 1.0\r\nContent-Type: text/html; charset=ISO/IEC 8859-15\r\n";