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
ご参考になりましたら幸いです。