プラグインを使わずにSMTPを設定するには、テーマの functions.php ファイルにコードを記述し、WordPressのメール初期化プロセス(phpmailer_init フック)を上書きする方法があります。
ただし、コードを直接編集するため、記述ミスをするとサイト全体が真っ白になるリスクがあります。必ずバックアップを取ってから、慎重に行ってください。
以下に具体的な手順とコードを紹介します。
手順1:functions.php にコードを追加する
使用しているテーマ(できれば子テーマ)の functions.php に以下のコードを追加します。
※ホスト名やポート番号などは、ご自身の環境(Xserver、Gmailなど)に合わせて書き換えてください。
add_action( 'phpmailer_init', 'custom_smtp_setup' );
function custom_smtp_setup( $phpmailer ) {
// SMTPを使用するように設定
$phpmailer->isSMTP();
// 【要変更】SMTPホスト名(例: sv1234.xserver.jp)
$phpmailer->Host = 'smtp.example.com';
// 【要変更】SMTP認証(通常は true)
$phpmailer->SMTPAuth = true;
// 【要変更】ポート番号(TLSなら587, SSLなら465)
$phpmailer->Port = 587;
// 【要変更】暗号化方式('tls' または 'ssl')
$phpmailer->SMTPSecure = 'tls';
// 【要変更】SMTPユーザー名(メールアドレス)
$phpmailer->Username = 'info@yourdomain.com';
// 【要変更】SMTPパスワード
$phpmailer->Password = 'your_password_here';
// 送信元アドレスと送信者名(必要であれば設定)
$phpmailer->From = 'info@yourdomain.com';
$phpmailer->FromName = 'サイト名';
}
手順2:セキュリティを強化する(推奨)
上記のコードでは、functions.php にパスワードを直接書くことになります。これはセキュリティ上あまり好ましくありません(テーマエディタから誰でも見えてしまう可能性があるため)。
より安全に行うには、パスワードなどの機密情報を wp-config.php ファイルに定義し、functions.php からそれを呼び出す方法をおすすめします。
1. wp-config.php に追記
FTPソフトなどでサーバー上の wp-config.php を開き、一番上の方(<?php の下あたり)に以下を追記します。
/**
* SMTP情報
*/
define( 'SMTP_HOST', 'メールサーバーのURL' );
define( 'SMTP_USER', 'ユーザー名' );
define( 'SMTP_PASSWORD', 'パスワード' );
define( 'SMTP_FROM', 'メールアドレス' );
define( 'SMTP_FROMNAME', '表示名' );
define( 'SMTP_PORT', 'ポート番号' );
define( 'SMTP_AUTH', true );
define( 'SMTP_SECURE', 'ssl' );
2. functions.php を書き換え
先ほどのコードを、定数を使う形に修正します。
add_action( 'phpmailer_init', 'send_smtp_email' );
function send_smtp_email( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_HOST;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASSWORD;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_FROMNAME;
$phpmailer->Port = SMTP_PORT;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->SMTPSecure = SMTP_SECURE;
}
動作確認の方法
プラグインを使わない場合、「テスト送信ボタン」がありません。以下の方法で動作を確認してください。
-
「パスワードリセット」を試す
WordPressのログイン画面で「パスワードをお忘れですか?」をクリックし、自分のメールアドレスを入力してリセットメールが届くか確認するのが一番手軽です。
-
お問い合わせフォームから送信する
Contact Form 7などを設置している場合、実際にフォームから送信して確認します。
注意点
-
子テーマを使う: 親テーマの
functions.phpに書くと、テーマのアップデート時に設定が消えてしまいます。必ず子テーマを使用するか、自作のプラグインとして管理してください。 -
Gmailを使う場合: Googleアカウント側で「アプリパスワード」の生成が必要です。通常のログインパスワードでは動作しません。