Contact Form 7でWP Mail SMTPを利用してメールが送れない場合の対処法
Contact Form 7はWordpressの1つで、
問い合わせフォーム等を簡単に導入できるプラグインです。
ただ、しっかり作られてるので、送信元に設置ドメインと関係ないメールアドレスを入れると、エラーとなり設定できません。
今回は、日本語ドメインのサイトから送信しようとしてハマりました。
用意するもの
・コンタクトフォームを設置したいサイト
・送信に利用したメールアドレス(別ドメインでも可)
WP Mail SMTP
今回は送信に利用するメールアドレスを別途用意して対応しました。
WP Mail SMTPを使うと、Wordpressからの全てのメールを設定したアドレスから送信する事ができるようになります。
インストールすると、設定メニューに「メール」という項目が追加されます。
その画面を開くと、メールの設定画面が表示されます。
通常のOutlook等の設定と同じように、メールの送信設定を入れて下さい。
「メーラー」の項目で「WordPressの全てのメールをSMTP経由で送信する。」を選択すると、Contact Form 7の設定等は関係なしに、全てのメールはこのアドレスから送信されます。
設定が終わったら、受け取れるメールアドレスを入力してテスト送信します。
falseとなって送れませんでした。
WP Mail SMTPの設定変更
色々と原因があって、ファイアウォール設定でポートが空いてるか等の基本的な部分もあるのですが、今回のメールアドレスはSSLを利用しない設定になっています。
PHPMailerはデフォルトではSSL証明書を検証してしまうようです。
その為、SMTPOptionsのデフォルト値を書き換えます。
私の利用時点でのバージョンでは、144行目に
$phpmailer->SMTPOptions = array('ssl' => array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true));
を追加しました。
下記の箇所を探して、同様に追加してみてください。
[root@test]# cd /var/www/html/wp-content/plugins/wp-mail-smtp/wp_mail_smtp.php←WP Mail SMTPの設定ファイル編集 // Set the other options $phpmailer->Host = get_option('smtp_host'); $phpmailer->Port = get_option('smtp_port'); // If we're using smtp auth, set the username & password if (get_option('smtp_auth') == "true") { $phpmailer->SMTPAuth = TRUE; $phpmailer->Username = get_option('smtp_user'); $phpmailer->Password = get_option('smtp_pass'); $phpmailer->SMTPOptions = array('ssl' => array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true));←この行を追加 } }
以上で、再度送信テストをしてみて正常にメールが届けば完了です。