ホーム > サーバー管理 > WordPressでコメント通知メールの文字化けの修正方法

WordPressでコメント通知メールの文字化けの修正方法

(ただの私的メモっス)

このブログはWordPressを利用しており、コメント投稿があるとメールでお知らせしてくれるように設定してあります。ただ、GMailで受け取った場合(他では受け取った事が無いのでどうなるかは不明)では本文以外が文字化けした上に、From情報が空の状態になっているので転送先であるMail2Webのメールデーモンから「意味わかんねぇメールをよこすな」というお叱りメールが送られてくるという微妙な状態に設置当初から悩まされていました。まあ目立って困る事も無かったのですが、ちょいと時間に余裕が出てきたので重い腰を上げて直すことにしました。


で、Google先生にお伺いを立ててみると以下のブログに情報が載っていました。(非常に助かりましたm(_ _)m<情報を載せてくれた方)


具体的なやり方としては「/wp-includes/pluggable.php」内の以下のコードを3箇所ほど修正することによって、通知メールを「ISO-2022-JP」で送信するようにしてやります(うちはUTF-8ベースで動かしています)。

(1)=====================================
function wp_mail($to, $subject, $message, $headers = ”) {
    global $phpmailer;

+    mb_internal_encoding(“UTF-8”);
+
    if ( !is_object( $phpmailer ) ) {
        require_once(ABSPATH . WPINC . ‘/class-phpmailer.php’);
        require_once(ABSPATH . WPINC . ‘/class-smtp.php’);


(2)=====================================
    $phpmailer->FromName = “WordPress”;
    $phpmailer->AddAddress(“$to”, “”);
–    $phpmailer->Subject = $subject;
–    $phpmailer->Body = $message;
+    $phpmailer->CharSet = “ISO-2022-JP”;
+    $phpmailer->Encoding = “7bit”;
+    $phpmailer->Subject = mb_encode_mimeheader($subject, “ISO-2022-JP”, “B”, “\n”);
+    $phpmailer->Body = mb_convert_encoding($message, “ISO-2022-JP”, “UTF-8”);
    $phpmailer->IsHTML(false);
    $phpmailer->IsMail(); // set mailer to use php mail()


(3)=====================================
        $header = explode( “:”, $line );
        switch ( trim( $header[0] ) ) {
            case “From”:
                $from = trim( str_replace( ‘”‘, ”, $header[1] ) );
                if ( strpos( $from, ‘<' ) ) {
-                    $phpmailer->FromName = str_replace( ‘”‘, ”, substr( $header[1], 0, strpos( $header[1], ‘<' ) - 1 ) );
+                    $phpmailer->FromName = mb_encode_mimeheader(str_replace( ‘”‘, ”, substr( $header[1], 0, strpos( $header[1], ‘<' ) - 1 ) ), "ISO-2022-JP", "B", "\n");
                    $from = trim( substr( $from, strpos( $from, '<' ) + 1 ) );
                    $from = str_replace( '>‘, ”, $from );
                } else {
                    $phpmailer->FromName = $from;
                }
                $phpmailer->From = trim( $from );
                break;
            default:



実際に修正を導入してテストしてみたところ、通知メールの文字化けも直り、メールデーモンから怒られることもなくなりました(^^)v。うーん、すっきり。

Pocket

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
http://digilife.bz/blog/wp-trackback.php?p=1328
トラックバックの送信元リスト
WordPressでコメント通知メールの文字化けの修正方法 - DIGIらいふ ~COOLにいこう!~ より

ホーム > サーバー管理 > WordPressでコメント通知メールの文字化けの修正方法

検索
フィード
メタ情報

ページの上部に戻る