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

以前にも同じ質問をしたのですが、いまいち解決していないので、もう一度質問させて頂きます。
ホームページでsendmailをつかってフォームより記入してもらった内容を自分のところと確認メールとして記入した人のところに送るようにしていますが、確認メールが文字化けすることがあるようです。

しかし、全ての人に対して化けるというわけではなく、ほとんどの場合は大丈夫なようですが、一部の人に対してだけ化けるようです。
関係しそうな部分を大まかに書くと下記のようにしておりますが、間違っているでしょうか?

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer,
$ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$buffer);

foreach $pair (@pairs){
($name, $value) = split(/=/, $pair);
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

&jcode'convert(*value,'sjis');
&jcode'convert(*name,'sjis');

$xx =$value;
&trans;
$value = $xx;
}

sub trans{
$from='[@01-9A-Za-z._-]';
$to='[@01-9A-Za-z._-]';
&jcode'convert(*xx, 'euc');
&jcode'convert(*from, 'euc');
&jcode'convert(*to, 'euc');
&jcode'tr(*xx, $from, $to);
&jcode'convert(*xx, 'sjis');
}

&jcode'convert(*message,'jis');

if (!open(MAIL,"|$sendmail $mail_address")) {&error;}
&jis("Subject: $mailname"); print MAIL "$msg\n";
print MAIL "To: $mail_address\n";
print MAIL "From: $mailfrom\n";
print MAIL "\n";
print MAIL "$message";
close(MAIL);

sub jis { $msg = $_[0]; &jcode'convert(*msg, 'jis');}

A 回答 (3件)

以下のヘッダが必要です。


文字コードを宣言していなければ自動でエンコードしないといけないので、誤認識やデコードしないメーラーがあって当然です。

MIME-Version: 1.0
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit


先に指摘しましたが、SubjectがMIMEエンコードされてないのも是正すべきです。
    • good
    • 0
この回答へのお礼

分かりました。やってみます。
この度は疑問が解消され、大変助かりました。
ありがとうございました。

お礼日時:2004/01/22 11:11

送っているヘッダの内用はどうなってますでしょうか?



掲載されている部分だけではヘッダが全然足りていませんが。ヘッダの内用がおかしいとかは大丈夫なのでしょうか?
    • good
    • 0
この回答へのお礼

ヘッダの内容についてですが、特に何も書いていませんでした。フリーで配布されている他のCGIをみたら下記のようなものが書かれておりましたが、これを付け加えればよいのでしょうか?
度々申し訳ありませんが、必要な記述をご教示頂きますようお願い致します。

print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n";

お礼日時:2004/01/21 13:49

化ける場合と化けない場合を明示してもらわないとわからなさそうです。

(実はいわゆる半角かなが化けてるだけとか?)

ところで本文が化ける理由はわかりませんが、このソースだとSubjectをmimeエンコードしてないので、Subjectは化けると思います。
本来はこのソースではSubjectは必ず化けるはずですが、ちゃんと表示してしまう“規格外のメーラー”が世の中多いですので。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
化ける場合ですが、一部の文字が化けているわけではなく、文章全体です。このような感じです
$B65;U;XL>$"$j$G$4EPO?$5$l$?J}

但し、そういう場合でもSubjectは化けていないようなのです。

お礼日時:2004/01/20 21:39

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