※ ChatGPTを利用し、要約された質問です(原文:sendmailの文字化け)
sendmailの文字化け
このQ&Aのポイント
フリーのショッピングカートのCGIをダウンロードして使ったところ、sendmailで送信した内容が文字化けしています。
エンコードの方法やjocode.plの設定に問題があるのでしょうか?日本語表示ができない状況です。
質問者はsendmailの設定についてのご教示を求めています。
フリーのショッピングカートのCGIをダウンロードして使ってみたところ、カート自体は問題なく動きましたが、sendmailで送信した内容が文字化けしています。
件名は
$subject = &mail64encode($subject);sub mail64encode {
local($subject) = $_[0];
&jcode'convert(*subject, "jis");
…省略…
の形でエンコードしているので日本語で表示されています。
本文は
if( open(MAIL,"| /$mail_pass1/$mail_pass2/sendmail $email")) {
&conv;
print MAIL "From: $email\n";
print MAIL "To: $user\n";
print MAIL "Subject: $subject\n";
print MAIL "注文年月日\n";
print MAIL "$date\n";
print MAIL "お名前 $regname\n";
・・・省略…
print MAIL "---------------------------------------------------------------\n";
print MAIL "Remote addr: $ENV{'REMOTE_ADDR'}\n";
print MAIL "Remote host: $ENV{'REMOTE_HOST'}\n";
print MAIL "User Agent : $ENV{'HTTP_USER_AGENT'}\n";
close(MAIL);
となっています。
print mail の中身はそのまま出力されるのではないのですか?
別にエンコードが必要ですか?
英数字は問題なく出力されるようですが、日本語は全滅です。
jocode.plを使用しています。
どなたかご教示下さい。
お礼
解決しました。
補足
ありがとうございました。 ご指摘のとおり、ヘッダーを見ると charset=us-ascii になっており、charset=iso-2022-jp になっておりませんでした。 メール部分にcontent-typeの記述がなかったので、iso-2022-jp で記述したのですが、ヘッダーに2重で表示され、us-ascii が有効になっているようでした。 いろいろいじってみましたが、どこで設定されるのかわかりません。 文字コードの指定で、ポイントがあればお願いします。