アプリ版:「スタンプのみでお礼する」機能のリリースについて

外部のテキストファイル(EUC)のメールテンプレートを読み込んでMb_Send_mailでメール送信するプログラムを使っているのですが、どういうわけかたまに文字化けしてしまいます。(必ずというわけではありません。5回に1回くらい)必ずというわけではないので、ますますわけがわかりません。PHPのバージョンは4.3.10で、PHPのソースはSJISです。レンタルサーバ側の設定はコードコンバートなどのオプションはOFFにしていると説明されました。Mb_Convert_Encodingしてみたりいろいろしてみても状況は変わらず相変わらず「何通かに一通」文字化けします。メール内容に動的に日本語を入れているわけではないので、同じ内容が化けたり化けなかったりすることに悩んでしまっています。なにとぞヒントを戴きたく。宜しくお願いします。

function SendMail() {
global $p;
# FORM INPUT
# メールテキストを開く
if (!File_Exists(MAILTXT)) { return FALSE; }
$fl = Fopen(MAILTXT, "r");

# メールタイトル(1行目)取得
$mail_sub = FGets($fl, 9182);

# メール本文取得
$mail_msg = "";
$keys = Array('email');
while (!FEof($fl)) {
$line = FGets($fl, 9182);
foreach ($keys as $key) {
$line = Str_Replace("[[$key]]", $p[$key], $line);
}
$mail_msg .= $line;
}

FClose($fl); # メールテキスト閉じる

Mb_Language("Japanese");

$whom = $p['email'];
#$mail_hed = "From: " . MAIL_FROM . "\nReturn-Path:" . MAIL_RETURN;

/* 追加ヘッダ */
$mail_hed = "From: hogehoge.com\r\n";
$mail_hed .= "Bcc:hogehoge2.com\r\n";
$mail_hed .= "Reply-To:hogehoge3.com\r\n";

return Mb_Send_Mail($whom, $mail_sub, $mail_msg, $mail_hed);

}

A 回答 (1件)

元の分と化けた文面などがあると、


どう受け取ってどう化けてしまったのかが判りやすいと思います。

文字化けの原因のほとんどは使用する文字コードが間違っているか
変換前の文字コードを間違えているかだと思います。
「何回かに一回」との事なので、
同じ文面では少々考え辛いですが、
php側で文字コードを判断する時に間違えているのではないかと思いますので、
色々変換を試してみて、結果を見てみる事をお勧めします。

参考までに、下記のコードではどのような化け方をしますでしょうか?
$mail_msg = mb_convert_encoding($mail_msg, "JIS", "EUC, SJIS");
return mb_send_mail($whom, $mail_sub, $mail_msg, $mail_hed);
    • good
    • 0
この回答へのお礼

返信ありがとうございました。
いろいろ試しているうちに、
mb_internal_encoding ("EUC-JP");
を追加したら、なぜか治ったようです。
いまいちピンとこないですね。。
化け方は日本語が???????とはてながいっぱいになってしまっていました。
とりあえず、今は文字化けが治りました。丁寧な返答ありがとうございました。

お礼日時:2005/07/22 19:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!