メール送信の巻
本章では、XAMPPの環境下において、CGIプログラムからメール送信を行います。
フォームメールのプログラム等の動作テストには、メール送信機能は必須です。
フォームメールのプログラム等の動作テストには、メール送信機能は必須です。
通常、UNIX系サーバ(LinuxやFreeBSD等)には、sendmailというメール送信のためのソフトウェアが設置されていて、CGIプログラムからメール送信を行う場合には、このsendmailを介してメール送信を行います。
ところが、Windows系のサーバには、sendmailがないため、CGIプログラムからメール送信を行う場合には、直接メールサーバとソケット通信をして送るか、sendまね〜る等の擬似ソフトを利用するしか方法はありませんでした。
XAMPPの場合、sendmailの代替用として、Mercury Mail と fake sendmail for windows という2種類のメールプログラムが同梱されています (*1)。
今回は、fake sendmail for windows を利用したPerlからのメール送信方法について、ご紹介をすることにします。
今回は、fake sendmail for windows を利用したPerlからのメール送信方法について、ご紹介をすることにします。
3-1. メールサーバの設定
fake sendmailは、XAMPPの以下のフォルダに既にインストールされています。
C:\xampp\sendmail\sendmail.exe
設定ファイルは、以下にあります。
C:\xampp\sendmail\sendmail.ini
テキストエディタで、sendmail.iniを編集しましょう。
なお、念のため、sendmail.iniファイルは、バックアップを取っておいたほうがいいでしょう。
主な編集箇所は、次の4点です。
(1) お使いのメール送信サーバ(SMTPサーバ)名を指定します。
以前は25番ポートが主流でしたが、最近はOP25B (*2) の普及で、587番等が多いようです。 正確なポート番号を確認し、指定します。
smtp_server=smtp.server.xx.jp(2) メール送信サーバのポート番号を指定します。
以前は25番ポートが主流でしたが、最近はOP25B (*2) の普及で、587番等が多いようです。 正確なポート番号を確認し、指定します。
smtp_port=587(3) 認証のためのユーザーIDとパスワードを指定します。
auth_username=user_id auth_password=user_password(4) pop3 before smtpサーバ(受信前にPOP3認証を行う)の場合には、受信サーバ(POP3サーバ)のサーバ名、ユーザーIDとパスワードを指定します。
pop3_server=pop.server.xx.jp pop3_username=user_id pop3_password=user_password設定箇所は以上です。 最後のpop3 before smtpについては、仕様が不明であっても、念のため受信サーバ(POP3)の接続情報を記述しておいても構いません。
3-2. フォームメールの設置
ダウンロードが完了したら、解凍します。
設置先は、次のフォルダです。
設置先は、次のフォルダです。
C:\xampp\htdocs\postmail
C:\xampp | +-- htdocs / | +-- postmail / postmail.html | postmail.cgi | init.cgi | check.cgi | +-- lib / *.* +-- data / *.* +-- tmpl / *.*修正するファイルは、init.cgi のみで、次の2箇所です。
(1) 送信先メールアドレスは、あなたの送信先のアドレスを正確に記述します。
(2) sendmailのパスは、fake sendmail のパスを記述します。例のとおりでいいはずです。
(2) sendmailのパスは、fake sendmail のパスを記述します。例のとおりでいいはずです。
# 送信先メールアドレス $cf{mailto} = 'xxx@xxx.xx'; # sendmailのパス【サーバパス】 # → プロバイダの指定を確認のこと $cf{sendmail} = 'C:\xampp\sendmail\sendmail.exe';POST-MAILへの設定作業については、以上です。
3-3. 動作テスト
送信テストを行いましょう。
ブラウザを起動して、以下のURLへアクセスします。
と進みます。メールは正常に届きましたでしょうか?
ブラウザを起動して、以下のURLへアクセスします。
http://localhost/postmail/postmail.html
フォームへの入力 → 確認画面 → 送信完了と進みます。メールは正常に届きましたでしょうか?
もし、メールがうまく届かないようであれば、以下の内容を確認してみましょう。
(1) 送信までは正常に完了しているのに、受信サーバ側がスパム扱いして受信拒否したり、スパムフォルダへ入ってしまっていることが多いです。
(2) 3-1. の「設定内容」を見直してみてください。
(3) 以下にエラーログが蓄積されますので、ログ情報をヒントに解決を図ってください。
(2) 3-1. の「設定内容」を見直してみてください。
(3) 以下にエラーログが蓄積されますので、ログ情報をヒントに解決を図ってください。
C:\xampp\sendmail\error.log
(4) ご本家の troubleshooting をチェックしてください。英文ですが、ChromeやIEの自動翻訳等を利用しましょう。