PHP로 ISO-2022-JP라는 문자 코드가 포함된 모델 종속 메시지 보내기
이번에 반한 이유는 함수
mb_encode_mimeheader
때문이다.수첩에서 말한 바와 같이 함수
mb_encode_mimeheader
를 사용할 때의 첫 번째 함수는인코딩할 문자열.
mb_internal_encoding()
와 같은 인코딩을 해야 합니다.http://php.net/manual/ja/function.mb-encode-mimeheader.php
따라서 파일 내 설정을 한 번
mb_internal_encoding
함수로 UTF-8에서 ISO-2022-JP로 일시적으로 변환해야 합니다.이 규격을 모르고 난타 현상에 빠졌다
샘플 코드
SendMail.php(UTF-8)<?php
/*
* このコードの文字コード・言語の設定を取得
*/
$original_encoding = mb_internal_encoding();
$original_language = mb_language();
/*
* メール送信処理開始
*/
mb_language( 'Japanese' );
mb_internal_encoding("ISO-2022-JP-MS"); // ここからISO-2022-JP-MS
$to = mb_encode_mimeheader(mb_convert_encoding("㈱イーグルジャンプ","ISO-2022-JP-MS",$original_encoding), 'ISO-2022-JP-MS')." <[email protected]>";
$subject = mb_encode_mimeheader(mb_convert_encoding("進捗どうですか♪","ISO-2022-JP-MS",$original_encoding), 'ISO-2022-JP-MS');
$body = mb_convert_encoding("進捗だめです( ^ω^)", 'ISO-2022-JP-MS',$original_encoding);
$headers = "From: ".mb_encode_mimeheader(mb_convert_encoding("おじさん","ISO-2022-JP-MS"))." <[email protected]> \n";
$headers .= "Content-Type: text/plain; charset=ISO-2022-JP\n";
$params = "-f [email protected]";
if(mail($to, $subject,$body, $headers,$params)){
echo "Success!";
}else{
echo "Fail!";
}
/*
* 文字コード・言語設定を元に戻す
*/
mb_internal_encoding( $original_encoding );
mb_language( $original_language );
마지막으로 문자 코드, 언어 설정을 원상태로 복구하는 것을 잊지 마세요~
그리고 메일 클라이언트가 브라우저에서 Gmail이나 Thunderbird일 경우 문자 코드의 설정이 달콤해도 자동으로 바뀌지만 조금 오래된 메일 클라이언트일 경우 코드가 흐트러질 때가 많으니 주의하세요.
Reference
이 문제에 관하여(PHP로 ISO-2022-JP라는 문자 코드가 포함된 모델 종속 메시지 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/puriso/items/445bd98e268bdeb51621
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<?php
/*
* このコードの文字コード・言語の設定を取得
*/
$original_encoding = mb_internal_encoding();
$original_language = mb_language();
/*
* メール送信処理開始
*/
mb_language( 'Japanese' );
mb_internal_encoding("ISO-2022-JP-MS"); // ここからISO-2022-JP-MS
$to = mb_encode_mimeheader(mb_convert_encoding("㈱イーグルジャンプ","ISO-2022-JP-MS",$original_encoding), 'ISO-2022-JP-MS')." <[email protected]>";
$subject = mb_encode_mimeheader(mb_convert_encoding("進捗どうですか♪","ISO-2022-JP-MS",$original_encoding), 'ISO-2022-JP-MS');
$body = mb_convert_encoding("進捗だめです( ^ω^)", 'ISO-2022-JP-MS',$original_encoding);
$headers = "From: ".mb_encode_mimeheader(mb_convert_encoding("おじさん","ISO-2022-JP-MS"))." <[email protected]> \n";
$headers .= "Content-Type: text/plain; charset=ISO-2022-JP\n";
$params = "-f [email protected]";
if(mail($to, $subject,$body, $headers,$params)){
echo "Success!";
}else{
echo "Fail!";
}
/*
* 文字コード・言語設定を元に戻す
*/
mb_internal_encoding( $original_encoding );
mb_language( $original_language );
Reference
이 문제에 관하여(PHP로 ISO-2022-JP라는 문자 코드가 포함된 모델 종속 메시지 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/puriso/items/445bd98e268bdeb51621텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)