[php] PHPMailer 문자 인코딩 문제

PHPMailer를 사용하여 등록, 활성화를 보내려고합니다. 사용자에게 메일 등 :

require("class.phpmailer.php");
$mail -> charSet = "UTF-8";
$mail = new PHPMailer();
$mail->IsSMTP();  
$mail->Host     = "smtp.mydomain.org";  
$mail->From     = "name@mydomain.org";
$mail->SMTPAuth = true; 
$mail->Username ="username"; 
$mail->Password="passw"; 
//$mail->FromName = $header;
$mail->FromName = mb_convert_encoding($header, "UTF-8", "auto");
$mail->AddAddress($emladd);
$mail->AddAddress("mytest@gmail.com");
$mail->AddBCC('mytest2@mydomain.org', 'firstadd');
$mail->Subject  = $sub;
$mail->Body = $message;
$mail->WordWrap = 50;  
if(!$mail->Send()) {  
   echo 'Message was not sent.';  
   echo 'Mailer error: ' . $mail->ErrorInfo;  
}

$message라틴어 문자가 포함되어 있습니다. 불행히도 모든 웹 메일 (gmail, webmail.mydomain.org, emailaddress.domain.xx)은 다른 코딩을 사용하고 있습니다.

UTF-8 코딩을 사용하여 모든 메일 함에서 메일을 정확히 동일하게 표시하려면 어떻게해야합니까?

메일 헤더 너비를 변환하려고 mb_convert_encoding()했지만 운이 없습니다.



답변

$ message에 ISO-8859-1이 포함되어 있다고 100 % 확신한다면 David가 말한 것처럼 utf8_encode 를 사용할 수 있습니다 . 그렇지 않으면 $ message에 mb_detect_encodingmb_convert_encoding 을 사용 하십시오 .

또한

$mail -> charSet = "UTF-8"; 

다음으로 대체해야합니다.

$mail->CharSet = 'UTF-8';

그리고 배치 (애프터 클래스의 인스턴스 new). 속성은 대소 문자를 구분합니다! 목록 및 정확한 철자를 PHPMailer 문서를 참조하십시오 .

또한 PHPMailer의 기본 인코딩은 8bitUTF-8 데이터 에 문제가 될 수 있습니다. 이 문제를 해결하려면 다음을 수행하십시오.

$mail->Encoding = 'base64';

양지 'quoted-printable'아마 (심지어 어쩌면 이러한 경우에 너무 일 것을 'binary'). 자세한 내용은 RFC1341-콘텐츠 전송 인코딩 헤더 필드를 참조하십시오 .


답변

$mail -> CharSet = "UTF-8";
$mail = new PHPMailer();

줄이 $mail -> CharSet = "UTF-8";있어야하며 $mail = new PHPMailer();공백이 없어야합니다!

이 시도

$mail = new PHPMailer();
$mail->CharSet = "UTF-8";


답변

파티에 늦어서 미안해 서버 구성에 따라 소문자 utf-8 문자를 엄격하게 지정 해야 할 수 있습니다. 그렇지 않으면 무시됩니다. 여기에서 솔루션을 검색하고 위의 답변 중 아무것도 도움이되지 않으면 이것을 시도하십시오.

$mail->CharSet = "UTF-8";

다음으로 교체해야합니다.

$mail->CharSet = "utf-8";


답변

나는 이런 식으로 나 자신을 작동

  $mail->FromName = utf8_decode($_POST['name']);

http://php.net/manual/en/function.utf8-decode.php


답변

$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->Encoding = "16bit";


답변

나는 & oacute를 받고 있었다 ; $ mail-> Subject / w PHPMailer에 있습니다.

나를 위해 완벽한 해결책은 다음과 같습니다.

// Your Subject with tildes. Example.
$someSubjectWithTildes = 'Subscripción España';

$mailer->CharSet = 'UTF-8';
$mailer->Encoding = 'quoted-printable';
$mailer->Subject = html_entity_decode($someSubjectWithTildes);

도움이 되길 바랍니다.


답변

위의 방법으로 작동하지 않고 여전히 메일은 다음과 같습니다 ª הודפסה ×•× ×©×œ.

$mail->addCustomHeader('Content-Type', 'text/plain;charset=utf-8');
$mail->Subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';;