2006年01月08日

名前の表示に悪戦苦闘

 メールフォームからメールを受信しました。
 発信者のメールアドレスはFrom欄に入力されていますから返信はできましたが、名前がわからないので誰からのメールかわかりません。がく〜(落胆した顔)
if($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $QUERY_DATA, $ENV{'CONTENT_LENGTH'}); }
else { $QUERY_DATA = $ENV{'QUERY_STRING'}; }

@pairs = split(/&/,$QUERY_DATA);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$QUERY{$name} = $value;
}
$M_name = $QUERY{'name'};
$M_from = $QUERY{'from'};
$M_subject = $QUERY{'name'};
$M_to = 'qin@seesaa.jp';
$M_message = $QUERY{'body'};

main::sdmail($sendmail,$M_to,$M_name,$M_from,$M_subject,$M_message);
 CGIを見れば確かに名前は送信するようになっています。
 しかし、メーラーの方で名前の受け皿がありません。
 そこで名前をメッセージに追加できるように
$M_message = $M_name + $M_message;
を追加したらCGIエラーになりました。
 配列にすればよいのかと
$M_message = $QUERY{'body'};
の代わりに
@M_message = ($QUERY{'name'},$QUERY{'body'});
とし
main::sdmail($sendmail,$M_to,$M_name,$M_from,$M_subject,@M_message);
とすると表示されるのは名前だけになってしまいます。
 @M_messageを%M_messageに変えても結果は同じです。
 このほか、いろいろ試してみてうまくいきません。
 やむを得ず私宛のメールフォームはフリーティケットシアターのフリーフォームに差し替えました。
posted at 04:46 | Comment(2) | TrackBack(0) | 情報技術
この記事へのコメント
> $M_message = $M_name + $M_message; を追加したらCGIエラーになりました。

CGI(perl)の文字列連結は . です。

$M_message = $M_name . $M_message;

もっと簡単な方法として " で括ればそのまま連結されます。

$M_message = "$M_name $M_message";

Posted by 通りすがり at 2006年01月08日 08:13

あっ、そんなに簡単にできるのですか。
さっそく下記のように修正し連結できるようになりました。
$M_message = "【発信者】\t$M_name\n=================\n$M_message";

通りすがりさん、どうもありがとうございました。

Posted by 島谷 at 2006年01月08日 10:27

 このブログはコメントの編集や削除をすることができません。コメントの編集や削除が必要な場合は私宛にメールをお願いします。
 半角文字の http:// が記載、お名前欄が空白または日本文字が全然ないコメントは投稿できません。ボタンをクリックしても投稿フォームが閉じないときはこれらに該当していないか確認してください。
 私は自説に固執しません。意見交換を重ねるに従いトップページの意見に修正が加えられますから議論される場合はコメントの流れに目を通していただけると幸いです。

棋譜投稿 ←をクリックすると碁盤付きのコメントが書けます。
        詳細はをご参照ください。

↓普通のコメントを書く

お名前:  [必須]

メールアドレス:

コメント:

この記事へのトラックバック