WordPressにはPHPのメール送信用ライブラリの「PHPMailer」が入っていますが(\wp-includes\class-phpmailer.php)、こちらを使うとプラグインを利用せずSMTP経由でメール送信を実現することが出来ます。
PHPMailer SMTP設定
以下のコードを functions.php 等に追加して利用します。
/**
* SMTP経由の送信設定
*/
function ag_send_mail_smtp($phpmailer)
{
/* SMTP有効設定 */
$phpmailer->isSMTP();
/* SMTPホスト名 */
$phpmailer->Host = "smtp.example.com";
/* SMTP認証の有無 */
$phpmailer->SMTPAuth = true;
/* ポート番号 */
$phpmailer->Port = "587";
/* ユーザー名 */
$phpmailer->Username = "ユーザー名";
/* パスワード */
$phpmailer->Password = "パスワード";
/* 暗号化方式 */
$phpmailer->SMTPSecure = "tls";
/* 送信者メールアドレス */
$phpmailer->From = "test@example.com";
/* 送信者名 */
$phpmailer->FromName = "送信者名";
/* デバッグ */
$phpmailer->SMTPDebug = 0;
}
add_action("phpmailer_init", "ag_send_mail_smtp");
設定関連コード
上記各設定に関する \wp-includes\class-phpmailer.php 内の関連コード抜粋
Host
/**
* SMTP hosts.
* Either a single hostname or multiple semicolon-delimited hostnames.
* You can also specify a different port
* for each host by using this format: [hostname:port]
* (e.g. "smtp1.example.com:25;smtp2.example.com").
* You can also specify encryption type, for example:
* (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465").
* Hosts will be tried in order.
* @var string
*/
public $Host = 'localhost';
Port
/**
* The default SMTP server port.
* @var integer
* @TODO Why is this needed when the SMTP class takes care of it?
*/
public $Port = 25;
SMTPAuth
/**
* Whether to use SMTP authentication.
* Uses the Username and Password properties.
* @var boolean
* @see PHPMailer::$Username
* @see PHPMailer::$Password
*/
public $SMTPAuth = false;
SMTPSecure
/**
* What kind of encryption to use on the SMTP connection.
* Options: '', 'ssl' or 'tls'
* @var string
*/
public $SMTPSecure = '';
SMTPDebug
/**
* SMTP class debug output mode.
* Debug output level.
* Options:
* * `0` No output
* * `1` Commands
* * `2` Data and commands
* * `3` As 2 plus connection status
* * `4` Low-level data output
* @var integer
* @see SMTP::$do_debug
*/
public $SMTPDebug = 0;
wp_mail()関数でメール送信
PHPMailerの設定が終わったら下記コードなどを必要なページや処理内に設定します。※メール送信には wp_mail()関数を利用します
<?php
/* 送信内容など設定 */
$mail_to = "送信先アドレス";
$subject = "メール件名";
$mail_body = "メール本文";
$headers[] = "Cc: ccemail@example.com";
$headers[] = "Bcc: bccemail@example.com";
/* 送信実行 */
wp_mail($mail_to, $subject, $mail_body, $headers);
環境情報
WordPress 5.3.2 エックスサーバー(x10) PHP 7.2.17 MySQL 5.7
コメント