問題
PHP8でのWordPress環境にて、ContactForm7を使いたいと言う要望があったので
Dockerにて環境を作りフォームの動作確認をしたところ
メッセージの送信に失敗しました。後でまたお試しください
と言うエラーが表示され送信できない。
Dockerと言う環境は必要最低限のコンポーネントで動作させていてSMTP等をインストールしていない。
ContactForm7上でメール送信をする際にメール送信する為の環境がない為にエラーが発生した。
解決策
・ Dockerのdocker-compose.ymlにmailcatcherを追記する
・ プラグインとしてWP Mail SMTPをインストール・設定
docker-composeの追記
smtp:
image: schickling/mailcatcher
ports:
- 1080:1080
- 1025:1025
depends_on:
- WordPressが動作しているコンテナ名
上記を追加して
$ docker-compose up -d
として起動する。
localhostとして設定した1080ではウェブメーラーでメールを確認することができる。
プラグイン側の設定
WP Mail SMTPインストールした後に設定画面にて
・ SMTPメーラー: その他のSMTPを選択
※※ 次へを選択
・ SMTPホスト: smtp を記載
・ 暗号化: なし を選択
・ SMTPポート: 1025 を入力(docker-composeで記載したポート)
・ TLSを自動化: ONにする
・ 暗号化: OFFにする
・ 送信者名: 任意
・ メールアドレス: test@hoge.fuga(送信するメールアドレス)
※※ 次へを選択
その後はプラグインの任意選択なので利用したいオプションを選択して保存する
上記の設定が完了すると、自動的にテストメールが送信される。
localhost:1080 をブラウザで確認するとテストメールが受信されている事を確認する。
ここまで出来ればDocker内でのContactForm7での動作確認まで出来るようになる。
いままでテストはテスト用の開発サーバーで行っていたため、MTA等は自動的に入っていたがDockerの場合は自分が必要となる物を明示的に選択しなければならず、様々なイメージを使って環境を整える必要がある。
大半自分のやっているレベルの物は誰かの通った道でトレース出来る轍があると言う事を忘れない。