- もどる -
MindでCGIへの道

■ メール送信のMindソース


以前の「Mindによるメール送信」の実験で使ったソースについて、時々質問をいただくので、ここに少し説明を書いてして、そのソース(tegami.src)も公開しておきます。


例えば、ABCDE@start.com から xxxxxxxx@nifty.ne.jp にメールを送るとして、私は以下のような手順のMindCGIプログラムを作り実験しました。


まず、HTMLのフォームからMindCGIで必要なデータを受け取り、次のような内容の message.txt をあらかじめ出力させます。

-----------message.txt---------------------------------------------
From: ABCD <ABCDE@start.com>
To: xxxxxxxx@nifty.ne.jp
Subject: Good monning!

おはようございます!
------------------------------------------------------------------

From: はメールの発信人名とアドレス。メールの配達に問題があった場合、これが返信先アドレスとなります。
To: は、メールの宛先。送信先アドレス。
Subject: は、メッセージの表題です。

★注意:送信先のアドレスだけは、必ずプログラムソースの中で記述し、ハードコーデングするようにします。フォームで送信先アドレスを入力できるようにするのは非常に危険です。


そして、次のようなコマンドでsendmailプログラムを呼び出し実行させた訳です。

/usr/bin/sendmail -t -f'ABCDE@start.com' < message.txt

-tフラグは、入力ストリームからヘッダーを読み取るという意味。
-fフラグは、発信人のアドレスとReturn-pathヘッダーを設定するもの。

MindCGIからこのようなコマンドをプログラム実行させれば、指示通りにxxxxxxxx@nifty.ne.jp へメールが送られます。


この実験に使ったMindCGIプログラムのソースは以下の通りです。

-----------tegami.src-------------------------------------------------------
※1998-04-07 ・メールのテストf

出力ファイルは ファイル。
読み出し行は 文字列実体 長さ 8192。
汎用行は 文字列実体 長さ 8192。
発信者アドレスは 文字列実体 長さ 256。

エラー検査とは     (・ → ・)
 エラー?
 ならば エラー文字列で 重大エラーする
 つぎに。

未記入時のHTML表示とは
 「未記入」で htmlヘッダを出力し
 H1中央開始
 「お名前またはメッセージが書き込まれていません」を 表示し H1終り
 H3中央開始
 「ブラウザの<戻る>ボタンで入力ページにもどり、」を 表示し H3終り
 H3中央開始
 「ご記入の上、再度送信してください。」を 表示し H3終り。

お礼・自動復帰とは
 「<META HTTP-EQUIV="Refresh" CONTENT="1;URL=http://www.vtama.com/start/">」を
 METAデータ1に 入れ
 「ありがとうございました」で htmlヘッダを出力し
 H1中央開始 「メッセージ、ありがとうございました!」を 表示し H1終り
 BR
 「自動的にホームページへ戻ります」を 表示し
 BR。

メインとは
白背景/黒文字をBODYデータ設定し
 標準CGI変数の取り込みし
※ "jcode-a name body"で 値の漢字コードを補正し
"name"の 値か空列を参照し 空列?
 または
 "from"の 値か空列を参照し 空列?
 ならば 未記入時のHTML表示し
 さもなければ
   「message.txt」で 出力ファイルを 新規オープンし エラー検査し
※名前
    "name"の 値か空列を参照し 読み出し行に 入れ
    読み出し行が 空列?
    でなければ
     "From: "を 汎用行に 入れ
     読み出し行を 汎用行に 追加し
    つぎに
※アドレス
    "from"の 値か空列を参照し 読み出し行に 入れ
    読み出し行が 空列?
    でなければ
     読み出し行を 発信者アドレスに 入れ
     " <"を 汎用行に 追加し
     発信者アドレスを 汎用行に 追加し
     ">"を 汎用行に 追加し
     汎用行を 出力ファイルに 一行書き込み エラー検査
    つぎに
※受け取り人
    "To: xxxxxxxx@nifty.ne.jp"を 読み出し行に 入れ
    読み出し行を 出力ファイルに 一行書き込み エラー検査
※タイトル
    "Subject: HP訪問者からのメール"を 読み出し行に 入れ
    読み出し行を 出力ファイルに 一行書き込み エラー検査
※メッセージ
    読み出し行を クリア
    "body"の 値か空列を参照し 読み出し行に 入れ
    読み出し行を 出力ファイルに 一行書き込み エラー検査
    出力ファイルを クローズし エラー検査し
    「/usr/bin/sendmail -t -f'」を 汎用行に 入れ
    発信者アドレスを 汎用行に 追加し
    「' < message.txt」を 汎用行に 追加し
    汎用行で プログラム実行し
    ならば お礼・自動復帰し
    さもなければ
     「SENDMAIL」で htmlヘッダ出力し
     「プログラム実行失敗しました!」を 大きく表示する
    つぎに
 つぎに
スタック検査。
------------------------------------------------------------------

2000-04-26

 - もどる -