読者です 読者をやめる 読者になる 読者になる

wordpressのcontact form 7でメールが送信されない件。

contact form 7(3.2.1 on wordpress 3.4.1)で、フォームからメールを送信しようとしたら、以下のメッセージが出てメールが送信できなくなっていた。

メッセージの送信に失敗しました。間をおいてもう一度お試しいただくか、別の手段で管理者にお問い合わせ下さい。

Webサーバ側のメール送信はmailコマンドなどでできることは確認していたし、そもそも以前イントールしたときには送信できていたのだ。
そこで、wp-includes/pluggable.phpのwp_mail関数内で関数の引数をerror_log("引数文字列", 0)でWebサーバのerrorログに表示したら、$subject, $message, $headersがないことに気がつく。
contact form 7プラグインの該当フォーム設定画面でメールの差出人、件名、メッセージ本文が空欄になっていた(宛先以外空欄)。これらを埋めることで解決した(メッセージ本文だけあればとりあえず送信するようだ)。
なぜそれらが空欄になっていたのかは原因不明のまま。

なお、contact form 7ではメール送信の際、wp_mail()を呼び出しているだけ。その内部では、class-phpmailerを使用している流れ。