- もどる -
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
- もどる -