AC-5

某SEの雑記帳

Contact Form 7でWP Mail SMTPを利用してメールが送れない場合の対処法

   

Contact Form 7はWordpressの1つで、
問い合わせフォーム等を簡単に導入できるプラグインです。

ただ、しっかり作られてるので、送信元に設置ドメインと関係ないメールアドレスを入れると、エラーとなり設定できません。
今回は、日本語ドメインのサイトから送信しようとしてハマりました。

用意するもの

・コンタクトフォームを設置したいサイト
・送信に利用したメールアドレス(別ドメインでも可)

WP Mail SMTP

今回は送信に利用するメールアドレスを別途用意して対応しました。
WP Mail SMTPを使うと、Wordpressからの全てのメールを設定したアドレスから送信する事ができるようになります。
インストールすると、設定メニューに「メール」という項目が追加されます。
WS000000

その画面を開くと、メールの設定画面が表示されます。
通常のOutlook等の設定と同じように、メールの送信設定を入れて下さい。
「メーラー」の項目で「WordPressの全てのメールをSMTP経由で送信する。」を選択すると、Contact Form 7の設定等は関係なしに、全てのメールはこのアドレスから送信されます。
WS000001

設定が終わったら、受け取れるメールアドレスを入力してテスト送信します。
WS000002

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));←この行を追加
        }
}

以上で、再度送信テストをしてみて正常にメールが届けば完了です。

 - WordPress