メールで受け取った内容をフォームに入れて送信したいのですが?

[上に] [前に] [次に]
CGI 習い始め [E-Mail] [HomePage] 1999/10/13(水) 15:20:03
受信したメールの内容をフォームに入れられるようなCGIかJavaScriptはありますか、例えば
[seimei]
Yamada Hanako と入った時にName="seimei" value="Yamda Hanako"
とYamada Hanako  が別フォームに入る様にして、それを送信したいのです。
やはり無理ですか?

とほほ 1999/10/15(金) 23:57:38
うーん・・・ちょっと、ご質問の意味がよくわからないのですが・・・
フォーム入力から受信したメールを他のメールアドレスにも送信したい、
つまり、フォーム入力したデータを複数のメールアドレスに送信したい
ということでしょうか?

CGI 習い始め [E-Mail] 1999/10/16(土) 14:25:26
お返事有難う御座います。
メールで入った、例えば
[FirstName]
Miki
[LastName]
Yasuda
[Address1]
135-1-1
[Address2] =name
Mikasa      =value
の value に当たる部分をフォームの中にいれて、それを第三者にインターネットを通じて<INPUT TYPE=submit VALUE=" 送信 ">で送信する方法を模索しております。 可能でしょうか?

ふじ 1999/10/16(土) 18:15:36
とりあえずPerlのCGIで実現する方法。

1.CGIを起動
 ↓
2.Net::POP3 モジュールかなにかを使ってPOPサーバからメールを取って来る。
 ↓
3.取ってきたメールの内容を解析。
>[FirstName]
>Miki
>[LastName]
>Yasuda
のような形式のメールなら、適当に処理して変数に入れる。
 ↓
4.フォームに変数の値を埋めこんだHTMLを出力。

(目で見て確認?)

5.サブミット。

若しくは、(CGIじゃなくて)定期的に起動する Perl スクリプトで
上記の 3. までの処理をして、LWP モジュールでも使ってデータを送信。
#あまり簡単ではないかも。

CGI 習い始め [E-Mail] 1999/10/17(日) 12:25:58
ふじさん 有難う御座います。
出来ると判ってうれしいのですが、CGI 習い始めで 1.CGIを起動の
起動でどんな CGIを利用すれば良いのかこの CGI のサンプルの有る
所をお教え願えれば嬉しいのですが、それと、
>[LastName]
>Yasuda
のような形式のメールなら、適当に処理して変数に入れる。
 ↓
4.フォームに変数の値を埋めこんだHTMLを出力。
適当に処理して変数に入れるの意味も判らず、全くお手上げです。
やはり1から勉強すべきでしょうね。
有難う御座いました。

 

ふじ 1999/10/18(月) 20:56:10
>1.CGIを起動の起動でどんな CGIを利用すれば良いのか
起動するのは、この一連の処理をするスクリプトそのものです。

>>[LastName]
>>Yasuda
>のような形式のメールなら、適当に処理して変数に入れる。
#とりあえずメールは取って来られたとして・・・
メール本文が一行ずつ配列 @lines に入っているとすると、

while ($line = shift(@lines)){
 if($line =~ /\[FirstName\]/){
  $first_name = shift(@lines);
  }elsif($line =~ /\[LastName\]/){
  $last_name = shift(@lines);
 }
}

等としてメール本文から各データを取り出して、

print <<END;
Content-Type: text/html

<FORM action="hogehoge">
<INPUT Type="text" value="$first_name" name="FirstName"><br>
<INPUT Type="text" value="$last_name" name="LastName"><br>
</FORM>
END

のようにして値を埋めこんだHTMLを出力、人が見て手動でサブミット。

もしくは、HTMLを出力するのではなくて、

print <<END;
Location: http://hogehoge/cgi-bin/hoge.cgi?FirstName=$first_name&LastName=$last_name

END

としてサブミットさせるとか。

CGI 習い始め [E-Mail] 1999/10/19(火) 15:28:45
ふじ様 ありがとうございます。
メールがこんな風に
[FirstName]
Nimura

[LastName]
Yoshihiro

[Address1]
Berumezon Namiki 303
1行ずつ空いている場合は
while ($line = shift(@lines)){
 if($line =~ /\[FirstName\]/){
  $first_name = shift(@lines);
  }elsif($line =~ /\[LastName\]/){
  $last_name = shift(@lines);
  }elsif($line =~/\""/){
    $"" = shift(@lines);
 }
}
で宜しいのでしょうか

1.CGIを起動の起動でどんな CGIを利用すれば良いのか
起動するのは、この一連の処理をするスクリプトそのものです。
これの意味がわかりません。 宜しければもう少し具体的にご説明
戴ければ助かります。 余りにも初歩的な質問で申し訳ありません
頑張ってやってみます。
有難う御座います。

ふじ 1999/10/19(火) 15:36:07
空行が入っていた場合 while ループの中で何も処理をしないで
次に行くので、特に

>}elsif($line =~/\""/){
>$"" = shift(@lines);
> }

このような処理は要らないです。

>1.CGIを起動の起動でどんな CGIを利用すれば良いのか
>起動するのは、この一連の処理をするスクリプトそのものです。
>これの意味がわかりません。
えーと・・・

「メールを処理してフォームに書き出してサブミットする」
というのがやりたい処理ですよね。
それをやる(つまり上記に書いたような)スクリプト、
という意味なんですが。

とほほ 1999/10/20(水) 01:52:52
フォームAから、Bさんが送信した、メールCが、CGI習いはじめさん
のメールサーバに溜まっているとします。それをフォームDに入れて、
第三者のEさんに、送りたいとのことですが・・・

その作業は自動的に行いたいのでしょうか?
それとも、CGI習いはじめさんがブラウザで1通1通手作業で確認し
ながら行いたいのでしょうか?

CGI 習い始め [E-Mail] 1999/10/20(水) 18:07:10
ふじ様 とほほ様 お忙しい所有難う御座います。
そうです。 メールが入っ来たのを別のフォームに入れて第三者
に送信致します。 内容はオフラインで送信前に1通1通手作業で確
認する必要があり、現在この作業をコピー貼り付けの作業で行ってお
り、項目が10個所ほどあり時間がかかりこれをオフラインで行いセミ
オート出来ないかと考えた次第です。 宜しくお願い致します。

ふじ 1999/10/21(木) 17:02:03
まず、動作を2つの部分に分けて考えましょう。

1.メールを取ってきてテキストファイルに保存する。
2.メール本文を解析して値を埋めこんだHTMLを書き出す。

1.については、Net::POP3 モジュールなどを使えれば出来るかと。
http://member.nifty.ne.jp/hippo2000/perltips/net/pop3.htm
使えなければ、
http://www.jkc.co.jp/booksupport/perl-inter/index.html
ここからPOPクライアントのサンプルを入手してみるとか。

2.テキストファイルになった本文を解釈する部分は、
以前サンプルソースを書き込みましたよね。

1. 2. が単体で動いたら、それを組み合わせて CGI で
動作するようにすれば、出来上がりです。

[上に] [前に] [次に]