【PHP】WordPressのメール送信にSMTP設定する方法
MixhostのcPanelからメールアカウントを作成します。
cPanelの『電子メールアカウント』から『+作成』を押し使用したいドメインを選択、任意のユーザー名とパスワードを入力してメールアカウントを作成します。
その後、作成したメールアカウントの『管理』を開き、ページ内メニューの『Connect Devices』を開きます。
そのページ内に記載されている、
■ユーザー名
■パスワード
■受信サーバー
■送信サーバー
に記載されている情報をメモします。
(※受信サーバーはお問合せを受け取るだけなら必要ありません)
その後、WordPressテーマの設定に移ります。
まずは『functions.php』にこちらを記載して、WordPressのメニューの『設定』の中に『SMTP設定』という項目を作成します。
コードが長くなるので、require_onceなどを使用して別フォルダに分けて記述する事を推奨します。
// 管理画面にサブメニュー追加
<?php
add_action('admin_menu', 'add_smtp_setting_menu');
function add_smtp_setting_menu() {
add_options_page(
'SMTP設定',
'SMTP設定',
'manage_options',
'smtp-setting',
'smtp_setting_page'
);
}
function smtp_setting_page() {
if (!current_user_can('manage_options')) {
wp_die(__('You do not have sufficient permissions to access this page.'));
}
?>
<div class="wrap">
<form method="post" action="options.php">
<?php settings_fields('smtp_settings-group'); ?>
<?php do_settings_sections('smtp_settings-group'); ?>
<?php $smtp_settings = wp_parse_args(get_option('smtp_settings'), [
'host' => '',
'port' => '',
'username' => '',
'password' => '',
'from_address' => '',
'from_name' => '',
]); ?>
<div class="metabox-holder">
<div class="postbox">
<div class="inside">
<div class="main">
<h3>SMTP設定</h3>
<div style="width: 100%;">
<div style="padding: 10px 0; font-weight: bold;">ホスト名</div>
<input type="text" name="smtp_settings[host]" value="<?php echo esc_attr($smtp_settings['host']); ?>" style="width: 200px;">
</div>
<div style="width: 100%;">
<div style="padding: 10px 0; font-weight: bold;">ポート</div>
<input type="text" name="smtp_settings[port]" value="<?php echo esc_attr($smtp_settings['port']); ?>" style="width: 200px;">
</div>
<div style="width: 100%;">
<div style="padding: 10px 0; font-weight: bold;">ユーザー名</div>
<input type="text" name="smtp_settings[username]" value="<?php echo esc_attr($smtp_settings['username']); ?>" style="width: 200px;">
</div>
<div style="width: 100%;">
<div style="padding: 10px 0; font-weight: bold;">パスワード</div>
<input type="text" name="smtp_settings[password]" value="<?php echo esc_attr($smtp_settings['password']); ?>" style="width: 200px;">
</div>
<div style="width: 100%;">
<div style="padding: 10px 0; font-weight: bold;">送信元アドレス</div>
<input type="text" name="smtp_settings[from_address]" value="<?php echo esc_attr($smtp_settings['from_address']); ?>" style="width: 200px;">
</div>
<div style="width: 100%;">
<div style="padding: 10px 0; font-weight: bold;">送信元名</div>
<input type="text" name="smtp_settings[from_name]" value="<?php echo esc_attr($smtp_settings['from_name']); ?>" style="width: 200px;">
</div>
</div>
</div>
</div>
</div>
<div class="settings_submit_btn">
<?php submit_button(); ?>
</div>
</form>
</div>
<?php
}
add_action('admin_init', 'init_smtp_settings');
function init_smtp_settings() {
register_setting('smtp_settings-group', 'smtp_settings');
}
次に、お使いのテーマの『functions.php』に下記の通り記載することで、 SMTP設定をテーマに反映させることが出来ます。
// SMTP設定
add_action('phpmailer_init', 'mailer_config', 10);
function mailer_config($mailer) {
$options = get_option('smtp_settings', []);
if (!empty($options)) {
$mailer->IsSMTP();
$mailer->SMTPAuth = true;
$mailer->Host = $options['host'];
$mailer->Port = $options['port'];
$mailer->Username = $options['username'];
$mailer->Password = $options['password'];
$mailer->CharSet = "utf-8";
$mailer->SMTPSecure = 'ssl';
$mailer->setFrom($options['from_address'], $options['from_name']);
}
}
以上2つを記述し、保存すると、WordPressの設定に『SMTP設定』という項目が追加になっています。
こちらからSMTP設定をします。
■ホスト名:受信サーバーのmail.xxxx.comを入力します(大抵ドメインになるかと思います。)
■ポート:送信サーバーのSMTP Port: の数値を入力します。
■ユーザー名:作成したユーザー名を入力します。
■パスワード:作成したパスワードを入力します。
■送信元アドレス:アドレを入力します。ス(大抵の場合はユーザー名と同じで大丈夫だと思います。)
■送信者元名:メールを送信する際に相手に表示する名前を入力します。
上記6点をすべて設定すれば、設定完了です。
最後に、テストでお問合せ等でメール送信をして確認してみてください。