簡単なメールを送り出す CGI 例です。
どこからパクってきたかわならなくなりました。元情報の人、ごめんなさい。でも有効な情報でした。
なお、現在使用している「さくらインターネット」では、日本語変換しないでも正常に日本語が出力されましたので、変換ステップはコメント行(#)にしてあります。
●From アドレスに注意
#!/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 アドレスを空にしたり、怪しいアドレスを書いておくと、メール受信時に迷惑メール扱いされることがあります。
サーバーに登録している自分のアドレスを書いておくと問題ないようです。