cakephpでお問い合わせフォーム
勉強がてら自作しようかなと思いつつ、もしかしたらもう誰か作ってるかな?
と検索してみたらそのものずばり、ありました。
toyosystem » CakePHP::メール送信プラグインを書いた
カスタマイズ性も高くて中身のソースを見るのもcakephpを理解するのに非常に勉強になります!!
稼動させるまでに少しだけハマったのでメモ。
なぜかメール送信できなかった。
プラグインだからインストールしたらすぐ動くかなあ?
と試したら、おお、さくさく動いてメールも送信完了したか?と思ったら肝心のメールが来ない・・。
調べてみたら、
xreaのサーバーでは(全部がそうかは知らないけど)、
mail関数の第五引数があると、
Warning: mail() [function.mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE.
となってメールの送信ができない、ということがわかりました。
ということで、
mail_contacts_controller.phpの100行目付近
<?php //return @mail($to,$subject,$content,$ext,$param); //hack return @mail($to,$subject,$content,$ext); ?>
と修正することで無事メールが送信されるようになりました♪
第五引数が指定できないのでsenderの設定ができないため、送信先アドレスが間違ってた場合のエラーメール(バウンスメール)が自分のところに戻ってこないかもしれないけど
(たぶんxreaのルートかなんかに行っちゃう、もしくは最近はsenderが設定されてないメールは全部カットしちゃうメール受信サーバーも多いのでいずれにしろ来ない、とか)、
まあそれぐらいはいいかなあなんて。
もしこれがどうしても気に入らない人は、
(xreaじゃないサーバーを使うか)
mail関数の代わりにsendmailを直接呼び出すスクリプト書くか、
phpmailerやpearのmailライブラリを使うといいのではないかと思います♪
cakephpのplugin(プラグイン)のRouting(ルーティング)方法
プラグインのアドレスは長ったらしくていやだなと思ったので、config/routes.phpでどうにか設定して短いURLにならんかなあ、とマニュアル見たけどプラグインのルーティング方法は載ってない・・と思ったけど、
<?php $Route->connect('/contact.php', array('controller' => 'mail', 'action' => 'mail_contacts', 'index')); ?>
こんなふうに設定したら、http://cakephpのルート/contact.phpで/mail/mail_contacts/indexにアクセスできました♪
プラグインのルーティングは
<?php $Route->connect('ルーティング先', array('controller' => 'プラグイン名', 'action' => 'コントローラー名', 'アクション名')); ?>
でできる、ということみたいだ(ちょっと気持ち悪いけど)。