revTalk CGI 07: shell を使ってEメールをブラウザーから送る1
表示サンプル


UNIX のコマンドライン mail を使う方法と、 sendmail を使う方法があります。
ここでは、mail を使って、REVサーバーのオーナーにクライアントからメールします。


<!-- メールするためのフォーム。このサンプルのファイル名「rev07_email1.irev」 -->
<form action="rev07_email1.irev" method="POST" name="mail1" >
  Your Name: <input name="name" type="text" size="20" />
  Email Address: <input name="email" type="text" size="20" /> <br \>
  <textarea name="comment" rows="6" cols="60" /></textarea> <br \><br \>
  <input type="submit" name="submit" value="Send Mail">
</form>



コメント欄が空白でなければ、ここからは revTalk で
宛先になるREVサーバーのオーナーのメールアドレスを、変数「tServerOwner」に入れておきます。

「02 Web フォーム POST」と同じように $_POST["name"] 等で、
それぞれのインプットテキストを変数に格納し、さらにマトメて tMailText に入れる。

put the tempName into tFile
put tMailText into url ("file:" & tFile)

システムが作りだす tempName をファイル名として、送るメールの本文を一旦保存して
(テンポネームで一旦保存しないと、メールは送れません)

put "mail<" && tFile && tServerOwner into tCommand

「tComment」に上記を shell コマンドとして格納して、shell を使います。

get shell(tCommand)

以下 revTalk 通しで


<?rev
  put $_POST["name"] into tName
  put $_POST["email"] into tEmailAddress
  put $_POST["comment"] into tComment

  if tComment <> empty then
    -- この部分の宛先メールアドレスは、実際の時には書き換える --
    put "mymail@server.com" into tServerOwner
    put "メールがありましたよー。" &cr& "name: " & tName &cr& \
        "email: " & tEmailAddress &cr&cr& tComment into tMailText
    put the tempName into tFile
    -- システムが作るテンポネーム でメール文を一旦保存 --
    put tMailText into url ("file:" & tFile)
    put "mail<" && tFile && tServerOwner into tCommand
    get shell(tCommand)
  end if
?>



表示サンプルは、メールを送るスクリプト部分をコメントにしてありますから、実際のメールを送れません。