電子書籍の厳選無料作品が豊富!

フリーのCGIをパーミッションを変える程度で設置できる程度のPerl超初心者です。

下のプログラムは、フォームを使って利用者のメールアドレスに送信してメールアドレスの確認のためのに書かれた部分らしいと思いますが、

通常のパソコンでは、届いたメールは文字化けしていません。
しかしながら、私が持っているauのiPhoneでは着信したメールが見事に文字化けしています。

ここより上も下も関係ない感じがするので、この辺りを切り取ってみました。
auのiPhoneで文字化けしないようにするにはどうすればいいのでしょうか?
それともこの辺りの記述じゃないのでしょうか?


お手数をお掛けしますが、教えてください。
お助けください。

よろしくお願い致します。


if ( $mail =~ /^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$/ && $mail !~ /[\[\]\,\;\:\\\s\r\n\t]/) {
$print .= "<CENTER><BR><BR>$mail宛てにメールを送信致しました。<BR><BR>しばらくたってもメールが届かない場合はメールアドレスが間違っている可能\性があります。<BR><BR>メールが届かない場合は再度お願い致します。<BR><BR>\n";

open(OUT,"| $sendmail -t");
&jcode'convert(*mailcheckkenmei,'jis');
print OUT<<"EOM";
To: $mail
From: $mastermail
Subject: $mailcheckkenmei

EOM
print OUT "お客様のメールアドレスを確認しました。\n下記URLにアクセスしてください。\nこのメールに心あたりがない場合はお手数ですが返信してお知らせください。\n\n\n";
print OUT "$basedir/formmail.cgi?query=$encmail";
close(OUT);
&print($print);
exit;
}else{
if ($mail){
$print .= "<p><Font color=\"red\">メールアドレスを確認してください</FONT></p>\n";
}
}

A 回答 (1件)

メールを送信するときは。

文字コードが非常に重要になります。
Content-Type: ヘッダをつけるようにしてください。
ヘッダをつけたとしても、一部のMUAは正しく認識してくれません。
ISO-2022-JPかUTF-8が無難と思われます。
ソースからヘッダを含めてjisに変換しているようですので、適切なContent-Type: ヘッダがあれば良さそうですね。
(ヘッダを含めてconvertはあまりにも乱暴です。)
複数バイト系の文字列は、(まずあり得ませんが)途中通過するMTAで欠落する場合があります。
7bitで表現できないコードは、BASE64でエンコードしてください。

メール送信の仕組みの基本を理解して、プログラミングされる様、お願いいたします。
    • good
    • 0
この回答へのお礼

あんまり分からないですが、このCGIを使うのは止めにしました。
少しずつ勉強していきます。ありがとうございました。

お礼日時:2012/10/18 10:56

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