SMTPとはメール送信プロトコルの略であり、サーバー上でメールを送信する為のソフトウェア(サービス)の事です。ワードプレスでこのメール送信用のSMTPの設定を行えるPHPのコード例をご紹介します。


ワードプレスサイトでメール送信ができないとき

ワードプレスサイトのフォームなどからメール送信がされないとき、その原因は様々ですが、下記のようなプログラムをサーバーに設置して送信されない場合はSMTPの設定不備(ワードプレスではなくサーバーのSMTPの問題)である可能性が高いです。

mailtest.php 
※このプログラムはサーバーのmail関数とワードプレスのwp_mail関数を直接実行するプログラムです。どちらも失敗する場合はSMTPの設定不全もしくはメール送信の仕組み自体がサーバーに入っていない可能性があります。

<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

$to = "メール送信テストしたい受信メールアドレス@example.com";

$from = "info@example.com";
$subject = "PHP Mail Test script";
$message = "This is a test to check the PHP Mail functionality";
$headers = "From:" . $from;
$success =mail($to,$subject,$message, $headers); //直接送信テスト

if (!$success) {
    $errorMessage = error_get_last();
    echo "テストメール送信失敗";
    var_dump($errorMessage);
}else{
    echo "テストメール送信成功";
}

require_once("./wp-load.php");
wp_mail( $to, $subject."from WP", $message."from WP", $headers );// ワードプレスのメール送信テスト

このような場合に下記のようにテーマのfunctions.phpに記載することでワードプレスのSMTP接続設定を簡単にプログラムから指定できます。

add_action( 'phpmailer_init', function( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'SMTPのホスト'; 
    $phpmailer->SMTPAuth = true;
    $phpmailer->Username = 'SMTPのユーザーID';
    $phpmailer->Password = 'SMTPのパスワード';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->Port = 587; //SMTPのポート
});


$phpmailer->Host = ‘SMTPのホスト’;
$phpmailer->Username = ‘SMTPのユーザーID’;
$phpmailer->Password = ‘SMTPのパスワード’;
$phpmailer->Port = 587; //SMTPのポート
の4つを設定いただく必要がございます。

このようなSMTPの設定は各サーバーのサポートページのSMTP関連の情報欄に記載されていることが多いです。

Xサーバー
https://www.xserver.ne.jp/manual/man_mail_setting.php

さくらインターネット
https://help.sakura.ad.jp/mail/2114/

lolipop
https://lolipop.jp/manual/mail/mail-set/#p-mail-soft

ご参考になりましたら幸いです。

WordPress ワードプレスのメール送信エラーの調査や修正のご依頼ご相談はWPドクターまでお気軽にお送りください