NetCommons3でメール送信テストをするためにMacにMailCatcherをインストール
MailCatcherはローカルでメール送信テストをするのに便利なツールです。
まずは https://mi-rai.co.jp/blog/326 を参考に MailCatcherをインストール
$ sudo gem install mailcatcher -n /usr/local/bin
インストールできたら起動
$ mailcatcher
Starting MailCatcher
==> smtp://127.0.0.1:1025
==> http://127.0.0.1:1080/
起動するとSMTPの情報が表示されるので NetCommonsのメール設定をMailCatcherにあわせます。
管理者アカウントでログインして「管理」→「システム管理」→「メール設定」
「メールを送れるかテスト送信する」にチェックをいれてメール送信のテスト。
http://127.0.0.1:1080/ にアクセスしてメールが届いてればOK
さぁ、メール関連の動作確認しましょう。
2020/07/27 14:53 追記
上記までやってメールが届いてるのを確認しても登録フォームからのメールが届きませんでした。
NetCommons3の各プラグインがメールを送信するときは、Mailsプラグインを利用して送信しています。
そのMailsプラグインは送信するメール情報を一旦mail_queuesテーブルに保存し、その後でメール送信コマンドを exec することでメールを送信するようになってます。
一旦mail_queuesテーブルに保存するのは、送信先が多かったときに分割送信したり、ある日時になったら送信するようなメールを各プラグインがあまり意識しなくても済むようにです。
で、MAMPでNetCommons3を動かすうえで問題になるのは即時メール送信をするために exec でメール送信コマンドを実行している点。
MAMPでうごいてるNetCommons3からexecでcakeコマンドを実行すると、MAMPのPHPでなく、macOSのPHPが実行されます。macOSのPHPでは、そのままだとDB接続できないので、mail_queuesテーブルから送信すべきメールがよみだせません。
というわけでこのあたりをカバーするために app/Console/cakeを書き換えました。
40行目phpを実行している箇所を書き換えます。
exec php -q "$CONSOLE"/cake.php -working "$APP" "$@"
MAMPのPHPへのフルパスに書き換えて、php.iniファイルも指定して下記の様にしました。
exec /Applications/MAMP/bin/php/php7.4.2/bin/php -c "/Library/Application Support/appsolute/MAMP PRO/conf/php7.4.2.ini" -q "$CONSOLE"/cake.php -working "$APP" "$@"
これでOKかと思ったらこれでも不足で app/Plugin/Mails/Utility/MailSend.php の書換も必要でした。
44行目 \MailSend::execInBackground() 内でコマンドを実行しているのですが、どいうわけか nohup
を使うとcakeコマンドの呼び出しに失敗します。
そこで nohup 使わないように変更。
// exec('nohup ' . $cmd . ' > /dev/null &');
exec('' . $cmd . ' > /dev/null &');
これでやっと登録フォームから送信したらメールが送られるようになりました。
Author And Source
この問題について(NetCommons3でメール送信テストをするためにMacにMailCatcherをインストール), 我々は、より多くの情報をここで見つけました https://qiita.com/RyujiAMANO/items/7842c1ead69d2002bcb6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .