

フルスクラッチではなく、元々日本語用メールフォームの改造で、韓国語用メールフォームを作成しております。

[code]

    $MAIL_SUBJECT = '自動送信メールのタイトル';
    $MAILTO = $in[email];
    $FH = fopen('送信するメールのひな形.mail',"r");
    $MAIL_MESS = fread ($FH,1000000);
    fclose($FH);
    //----メール記載内容
    $MAIL_MESS = str_replace("[st_date]",$in[st_date],$MAIL_MESS);
    //----エンコード指定
    mb_language("uni");
    $MAIL = base64_encode($MAIL_MESS);
    
    //$MAIL_SUBJECT = JcodeConvert($MAIL_SUBJECT,0,3);
    $sender_name = 'メーラーに表示される送信者名';
    $Header = "From: ".mb_encode_mimeheader($sender_name). " <{$ADMIN_MAIL}>\nCC: {$ADMIN_MAIL}\n";
    if(!mb_send_mail($MAILTO,$MAIL_SUBJECT,$MAIL,$Header)){
        $val = "Not send mail";
        setcookie("inb_err_msg[email]","$val",0,"/");
        header("Location: form.html");
        exit();
    }
    
[/code]

と、base64にエンコードすることで文字化けせずメールは受信出来るようなったのですが、  
本文が（当然ですが）base64でエンコードされたものになっています。  
どうにか入力した言語（韓国語）で受け取りたいのですが、どのような記述が必要なのでしょうか。


CC BY-SA 4.0
2019-10-11T07:02:58.527
59637
2019-10-15T01:50:40.947
2019-10-15T01:50:40.947
36168
36168
question
php mail
韓国語メールフォームをbase64でエンコードしたが、確認メールを入力した言語（韓国語）で受け取りたい


メールのヘッダーに

[code]

    Content-Transfer-Encoding: base64
    
[/code]

と指定します。これにより、メーラーが base64 デコードして画面に表示してくれます。  
参考： [日本語メールの仕組み | SendGridブログ](https://sendgrid.kke.co.jp/blog/?p=10958)

[`mb_send_mail()`](https://www.php.net/manual/ja/function.mb-send-mail.php)
ではメールヘッダを4番目の引数 (`additional_headers`) に指定しますが、  
その前に [`mb_language("uni")`](https://www.php.net/manual/ja/function.mb-
language.php) と書いているのでむしろ自前で base64_encode したり `Content-Transfer-Encoding`
指定する必要はないかもしれません。

もうちょっと広い範囲のプログラムコードや、PHPのバージョン、あとこのコードで実際に受け取ったメールのヘッダ部分を提示してくださるとなんか分かるかもしれません。


CC BY-SA 4.0
2019-10-11T10:19:40.053
59644
2019-10-11T10:19:40.053
5469
59637
answer