CGI-BBS > CGI > Perl > CSVエディタから、データ内のメアドに送信


カレッヂ
カレッヂ


質問者 けん  投稿日 9/8(土) 11:37:59
はじめまして。お世話になります。
レスキュさんのcsvエディタを、利用させてただいております。
さて、入力項目にメールアドレスを設定した場合、その行にある入力項目を
ボタン1つでそのメールアドレスに送信できないでしょうか?

具体的に言うと、↓こんなcsvデータを扱います。

メアド 名前 項目1 項目2 項目3  
-----------------------------------
XX@XX 山田  abc  def  ghi
YY@XX 鈴木  eee  fff  ggg

csvエディタでの修正画面で「記録する」ボタン付近に「送信する」ボタンをつけて
たとえば、

メアド=XX@XX
名前=山田
項目1=abc
項目2=def
項目3=ghi

という内容を、xx@xxに送信したいのです。

どうやら foreach というものを使うらしいというところまでわかりましたが
それ以上はどうしたらよいか分かりません。

メール送信の仕組みはmailto:を使ってメーラーでやろうとしています。
(メーラーに送信のログが残るから)

私のレベルは初心者で、CGIについてはありものをほんの少し改造できるくらいです。

要領を得ない質問で申し訳ございませんが、ご存知の方宜しくお願いします。
回答者 vagabond  [削除]  投稿日 9/10(月) 01:19:21
foreachについては、次のように空白(カマとか)でsplitしてデータ分割してみるといいかも。そして、
primaryキーを適当なものにしてそれで、データをサーチすると。あなたの例でnameをprimaryキーにみました。

use FileHandle;

sub fileread{
        my $buf;
        my $ifh=new FileHandle $_[0],O_RDONLY;
        !defined $ifh and die "Could not open $_[0] :$!";
        while(<$ifh>){
                chomp;
                $buf=[split(/\s+/,$_)];
                $_[1] eq $buf->[1] and last;
        }
        $ifh->close;
        return wantarray ? @$buf : join ",",@$buf;
}
my($mailaddr,$name,$item1,$item2,$item3)=fileread("cvsfile","name");

print $mailaddr;


mailto:ではcvsデータの内容は送れないと思うのですが、普通CGIではsendmailとかでメール送信をします。
回答者 vagabond  [削除]  投稿日 9/10(月) 01:23:58
cvsでなくcsvです。間違いました。
質問者 けん  [削除]  投稿日 9/12(水) 20:31:34
ありがとうございました。
お答えの意味をわかるようになるまでまず勉強して
(すぐには理解できなかったです、すみません)
それから解釈しようと思います。

ありがとうございました。

このページは終了したので返信(回答)は書きこめません

Web裏技