Study of CGI

CGIプログラムによるメールの送信

ホームページからメールを送信する場合、大きく分けてユーザー側のメールソフトの機能を用いる場合と、CGIプログラムによりサーバー側で処理する方法があります。

ユーザー側で処理する場合は、リンクとフォームを使う方法があります。リンクは、単純にリンク先に、メールアドレスの前にmailto:というプロトコルをつけたものを設定します。すると、メールソフトが適正に、設定されていればメールソフトが立ちあがり、メールを送る準備が整います。

フォームを使った場合も、formタグのaction属性に上記と同じmailto:+メールアドレスを設定します。(ただし、この場合はエンコードなどをしておかないと直接メールソフトだけではよめません)

本文には、フォームの内容が"name属性"="内容"という形で、挿入されます。

サーバー側で処理する場合は、多くの場合Sendmailを使うことになります。(qmailなどのMAT(メール転送エージェント)も使えるようです)

簡単に言えば、所定の形式に整えたメールのデーターを、sendmailなどのMATに送り、送信を依頼します。


Sendmailを使ったメール送信

Sendmailを例とると、簡単に言うと手順は以下のようになります。

  1. フォームなどから送られてきた内容を、jcode.plなどを利用し文字コードをjisに変換する。
  2. sendmailを開く。(ファイルを開く時と同様)
  3. 開いたファイルハンドルに対し、送信先(To)、送信者(From)、タイトル(Subject)を書き込み、コンテンツタイプを表す「Content-Type: text/plain;\n\n」を書き込んで、最後に本文を書き込みます。
  4. ファイルハンドルをクローズし、書き込んだ内容をsendmailに書き込み(送信し)ます。
  5. sendmailがメールを送信します。

サンプルは以下にて、公開していますので参考にしてください。(こんなものでもちゃんと送れます)

(http://www.story-maker.jp/cgi/basic/m-basic.txt)


参考:フォームからのメール送信

フォームにメールアドレスを指定してメールを送信するソースを以下に載せます。


<form name="form1" action="mailto:メールアドレス" method="post" 
		onsubmit="document.form1.encoding='text/plain'">
		
  <input type="submit" name="submit" value="submitq">
  <input type="text" name="name" value="" size="5">
  <input type="text" name="body" value="" size="5">
  
</form>

ポイント

  1. サーバー側からメールを送るには、sendmailなどのMATが必要。
  2. メールを送るのは、ファイルを開くようにsendmailを開いて書き込む。
Form HomePage Cookie

□新着

  • 2016/04/14
    ページ復旧
  • 2007/10/06
    Story Maker始動
  • 2007/06/13
    久々の更新
  • 2007/01/06
    logちょっとバージョンアップ
  • 2006/07/27
    ホームページのPerl 終了

□Topics

  • 2016/04/14
    サイト復旧
  • 2007/10/06
    StoryMaker始動
  • 2007/06/13
    今後にぜひご期待を!
  • 2006/06/26
    今後について
  • 2006/06/15
    環境の変化