どうしてもWindowsで受講するならMAMPよりXAMPP
WindowsとMacの違いについては詳しくは書きませんが、Windowsでphpの勉強を進めていく中で最初にぶち当たった壁が、ローカル環境からのメール送信でした。
これ、最初はWindowsじゃできないと思ってスルーしていましたが、やっぱり自分で書いたコードが本当に完全に動くかどうかは、書いた処理が全部ちゃんと実行されているのを確認しないとわからないじゃないですか。
なんとかローカルでメール送信もできるようにならないかと調べてみたところ、XAMPPならFake Sendmailが使えるようなので、ローカルの仮想サーバをMAMPからXAMPPに変更しました。
Fake Sendmailはphpのmbsendmailとか使ってメール送信する際に、実際にメールを送るわけではなくテキストファイルとしてローカルに出力してくれる機能のようです。
講義の中ではMAMPを使っていますが、Windows環境で受講されている場合は最初からXAMPPを使ったほうがいいかもしれません。
XAMPPインストールしただけではFake Sendmailは使えない
これでWindowsでもsendmailできるように必要なものは揃いましたが、そのままでは使えません。
XAMPPコントロールパネルで、ApacheのConfigボタンからphp.iniファイルを開きます。
ファイル内検索で「sendmail」を検索すると[mail function]というセクションが見つかるので、そこの設定を書き換えます。
基本的には既存の設定のうち、For Win32 onlyと書かれたブロックでコメントアウトされていない部分をコメントアウトします(行頭に;をつけます)
で、全部コメントになったブロックの下あたりに次の1行を追加します。
sendmail_path = ""C:\xampp\mailtodisk\mailtodisk.exe" -t"
これでFake Sendmailが使えるようになります。
実際にmb_send_mailを含む処理を実行してみると、xampp\mailoutputフォルダに新しいテキストファイルが作成されているはずです。
ここにテキストファイルが作成されていない=sendmailが失敗しているので、実行してもファイルが作られない場合はコードを見直してみましょう。
※php側でエラーを吐いていないのにテキストファイルが作成されない場合は、php.iniファイルの記述が間違っている場合もあります。
コメント