2017-03-21 24 views
1

問題:Wordpress用の連絡フォーム7(CF7)プラグインを使用して作成した連絡フォームからメールを送信しようとしています。私は基本的なフォームを設定し、成功したら私の個人的な電子メールに送信します。ただし、それぞれの提出は失敗に終わります。お問い合わせフォーム7はPHPMailerを使用しているようですが、何とかPHP mail()を使用しています....どうですか?

環境:Docker wordpress container(Apacheのみ実行、sendmailプログラムはインストールされていません)。また、WP-config.phpの中で、私はphpmailerのはIsSMTPを使用するように設定するには、このブロックを追加しましたが、これはすべてのWPの他の場所と同様にして、マニュアルPHPスクリプトで成功しテストしました:

add_action('phpmailer_init', 'phpmailer'); 
function phpmailer($phpmailer) { 
     $phpmailer->isSMTP(); 
     $phpmailer->Host = 'mysmtpopenrelayserver'; 
     $phpmailer->SMTPAuth = false; 
} 

期待:Contact Form 7プラグインファイル/includes/mail.phpを調べると、phpmailer()を使用しているはずですが、Apacheエラーログに "sh:sendmail:command not found"というメールが表示されます。実際にはmail()関数を代わりに使用しようとしています。

ここで何が起こっているのかを理解するには、何か説明が必要です。私はこのコンテナにsendmailをインストールしたくありません。

+0

これを説明してください。 wp-config.phpでは、phpmailerにIsSMTPを使用するように設定し、オープンSMTPリレーサーバーと一緒に提供しました。できます!私はWPのコアからすべての電子メールを取得します。しかし、CF7はまだIsMailの使用を試みています。どうして? – Dan

答えて

0

デフォルトでは、PHPMailer(したがって、CF7は私が想定しています)はPHPの組み込みのmail()関数の大きなラッパーとして機能します。 mail関数は、動作するローカルメールサーバーを必要とします。通常は、後置されます。

これを回避するには、自分のSMTPクライアントを使用するようにPHPMailerに依頼するようにCF7を設定します。これはmailを呼び出さないローカルメールサーバーを必要としません。

+0

phpmail-> IsSMTPを使うためにwp-config.phpで指定しました。私はサーバー上でsendmailを持っていないし、phpmailerから電子メールを送信するだけなので、これがうまく動作することは分かっています。 WPで新しいユーザーを作成すると、電子メールが届きます。私がphpmailerを使ってメールを送るphpスクリプトを書くと、私はそれを手に入れます。 'add_action(' phpmailer_init '、' mail_relay '); function mail_relay(\ $ phpmailer){ $ phpmailer-> isSMTP(); $ phpmailer-> Host = 'oursmtprelayserver'; $ phpmailer-> SMTPAuth = false; ' – Dan

+0

CF7が設定をバイパスしたり元に戻したりしているようです。ブレークポイントを設定すると、その行為でそれを捕らえることができるはずです。 – Synchro

関連する問題