中井技術工房 CGI アプローチ トップ > CGIアプローチ > ここ

メール送信機能
メール送信機能

●メール送信 CGI のコーディング例

簡単なメールを送り出す CGI 例です。
どこからパクってきたかわならなくなりました。元情報の人、ごめんなさい。でも有効な情報でした。
なお、現在使用している「さくらインターネット」では、日本語変換しないでも正常に日本語が出力されましたので、変換ステップはコメント行(#)にしてあります。


     #!/usr/bin/perl
          # 本宣言の Dir はサーバーによって異なる

     print "Content-type:text/html\n\n";  # この宣言はサーバーによっては不要

     #// メール送信準備
     $mailer = '/usr/sbin/sendmail';        # さくらで指定されているコマンドパス
     $mlfr = 'nakai99@sand.ocn.ne.jp';      # from アドレスを変更のこと 空にするとやばい
     $mlto = 'nakai99@sand.ocn.ne.jp';      # to アドレスを変更のこと 当然指定必要
     $mlsb = 'タイトル';                    # subject
     $mlms = 'テストメール';                # 本文
     $jcph = '.';

     #// メール送信 変換は不要であることを確認 H26.12.28
     #  require 文を入れるとここで処理が中断されてしまう。いらんかった

     #  require "$jcph/jcode.pl";
     # 

     # 日本語変換処理は不要でした。タイトル、本文とも日本語でOKです。
     #  jcode'convert(*mlsb, "jis");
     #  jcode'convert(*mlms, "jis");

     # 送信ヘッダを作る。
     # だらだらと長いが、文字連結(.) しているので要は From,To,Subject の3行を合成している
     $mlhd = "From: $mlfr" . "\n" . "To: $mlto" . "\n" . "Subject: $mlsb" . "\n\n";
     
     # メール用ファイルをオープン
     $err = 0;
     open(MAIL, "| $mailer -t -f'$mlfr'") or $err = 1;
     
     # 正常にオープンできればそのファイルに本文を出力する
     if ($err == 0) {
        print MAIL $mlhd;
        print MAIL $mlms;
        print MAIL "\n";
        print MAIL "\n\n" . "." . "\n";
        
        # メールファイルをクローズする→送信
        close(MAIL);
        $mailrslt = 'メールを正常に送信処理しました。';
     }
     else {
        $msilrslt = 'メール送信エラーが発生しました';
     }
●From アドレスに注意

From アドレスを空にしたり、怪しいアドレスを書いておくと、メール受信時に迷惑メール扱いされることがあります。
サーバーに登録している自分のアドレスを書いておくと問題ないようです。


トップ > CGIアプローチ トップ > 頁トップ