
저는 Postfix를 메일서버로 사용하고 있습니다. 우분투 OS가 있습니다.
그런 다음 PHP를 사용하여 이메일을 보냅니다.
문제는 VPS 공급자가 사용하는 메일 소프트웨어에 의해 내 이메일이 제대로 인코딩되지 않는다는 것입니다.
그들에 따르면 문제는 나에게 있다.
제대로 인코딩되지 않은 것은 이름 필드뿐입니다. 예를 들어 내 이메일에서는 "Björn"이 "Björn"이 됩니다.
그러나 을 에코하면 $name
"비요른" 맞습니다.
또한 Gmail과 Hotmail에서는 올바르게 표시됩니다.
이상한 부분은 "텍스트"(메시지 자체)가 올바르게 인코딩된다는 것입니다.
메일을 보낼 때 다음을 사용합니다.
$headers="MIME-Version: 1.0"."\n";
$headers.="Content-type: text/plain; charset=UTF-8"."\n";
$headers.="From: $name <$email>"."\n";
$name= iconv(mb_detect_encoding($name), "UTF-8//IGNORE//TRANSLIT", $name);
//// I HAVE TRIED WITH AND WITHOUT THE LINE ABOVE, NO DIFFERENCE
mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $text, $headers, '[email protected]');
나는 iconv 라인을 사용하거나 사용하지 않고 시도했지만 행운이 없습니다.
내가 생각할 수 있는 마지막 것은포스트픽스, 거기에 문자 인코딩 설정이 있을 수 있나요? 아는 사람 있나요?
답변1
메시지 텍스트는 사용자가 정의한 모든 문자 세트일 수 있습니다(메일 헤더(content-type = utf8)에서 메일에 대한 문자 세트를 정의하지만 헤더(제목, 보낸 사람 - 이름, 이메일)는 클라이언트에서 정의되기 때문입니다). Gmail은 기본값으로 utf8을 사용하는 반면 이메일을 보는 다른 클라이언트는 원하는 것을 사용할 수 있으며 기본적으로 ASCII 문자만 모든 곳에서 완벽하게 지원됩니다.
편집: MIME으로 인코딩된 경우 메시지 헤더에 US-ASCII 외부 문자를 포함할 수 있습니다("=?charset?encoding?encoded text?=").
답변2
$name
내가 본 문제 중 하나는 UTF-8로 변환했다는 것입니다.~ 후에에 포함시킵니다 $headers
. 따라서 postfix로 전송되는 것은 이전에 거기에 있었던 모든 것입니다. 당신은 iconv()
그것에 MIME 인코딩을 추가해야 합니다~ 전에에 추가합니다 $headers
.