#!/usr/bin/ruby -Ke # このCGIがHTMLとして読み込む物だとブラウザに指示 require "cgi" # cgiライブラリの読込 require "net/smtp" # SMTPライブラリの読込 require "kconv" # kconvライブラリの読込 require "base64" # base64ライブラリの読込 require "timeout" # timeoutライブラリの読込 # フォームデータの読出し form = CGI.new print "Content-type: text/html\n\n" from = form["from"][0].to_s answer = form["answer"][0].to_s comment = form["comment"][0].to_s # (1)初期設定 MailSubject = "フォーム送信練習" # 送信メールのSubject MailFrom = from MailTo = "nawate@mag.shimane-u.ac.jp" # メールの受信者アドレス(必ず自分の使っているメールアドレスに変更して下さい。) MailServer = "localhost" # メールサーバーのホスト名 error_message = "" # エラーメッセージ # (2)メールテキスト作成メソッド def make_mail_text(subject, from, to, body) # このメソッドの初期設定 char_set = 'iso-2022-jp' len = 15 mail_subject = '' # Subject部分の作成 # =?(CharactorSet)?B?(BASE64エンコードされた文字列)?=\n の形式のテキスト subject.scan(/.{1,#{len}}/s) do |str| str_jis = Kconv::tojis($&) mail_subject += " =?" + char_set + "?B?" + encode64(str_jis).chomp + "?=" + "\n" end # メールのテキストの作成 mail_text = <<-EndOfMail Subject:#{mail_subject}To: #{to} From: #{from} Content-Type: text/plain; charset=#{char_set} MIME-Version: 1.0 #{Kconv::tojis(body)} EndOfMail return(mail_text) end # (3)メールの送信 def send_mail(host, src, from, to) timeout(20) do Net::SMTP.start( host, 25 ) do |session| session.send_mail( src, from, to ) end end end # (4)エラー表示 def error_print(message) print <<-EOF # HTMLの表示 RubyCGI練習フォームエラー
フォーム練習ページ

エラー

理由:
#{message}

以上のエラーが発生した為にアンケートの送信を取りやめました。
エラー内容を確認した後、前の画面に戻って送信をやり直してください。

EOF exit end # (5)フォームチェック # 受け取るフォームデータのチェック error_message += "・答に異常があります。
\n" if !(answer =~ /^[012345]$/) # エラーがあったら error_print(error_message) if error_message != "" # (6)メール送信 # メールの本文の作成 mail_body = < RubyCGIフォーム練習完了
練習フォーム

完了

フォーム練習にご協力いただき誠にありがとうございました。
EOF