IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / Google / WordPress:メール送信にGmailのSMTPを使う(プラグインなし)

WordPress:メール送信にGmailのSMTPを使う(プラグインなし)

2023/03/21 Google, Wordpress

Docker を使ってローカルでテーマを作っていますのでメール送信のテストが出来ません。また、実際に可動させる場合でもレンタルサーバーのメール設定をせずにテーマ内で全て完結できる方が簡単ですので、Gmail の SMTP サーバーを使ってメール送信ができるようにします。WP Mail SMTP by WPForms などプラグインを使わなくても簡単に出来ます。

  • Google からアプリパスワード取得
  • functions.php に書き加える
  • メール送信チェック

Google からアプリパスワード取得

作業の流れは2段階で済みます。

  1. Google アカウントでアプリパスワードを取得する
  2. functions.php に SMTP サーバー設定を書き加える

まず、Google アカウントからのアプリパスワードの取得です。取得画面は 2023年3月のものです。よく変更になりますので変わっている可能性があります。

Google アカウントにログインし、セキュリティをクリックします。

2段階認証を有効にしていませんと先に進めませんので、していない場合は先に2段階認証の設定します。2段階認証が有効になっている場合はクリックして先に進みます。

スクロールしますと一番下にアプリパスワードがありますのでクリックします。

「アプリを選択」で「メール」を選び、「デバイスを選択」で「その他」を選び「WordPress」など好きな名前を入れて生成をクリックします。そうしますとダイアログが開きパスワードが表示されますのでコピーして記憶しておきます。閉じてしまいますと次に見ることができなくなるようです。その場合は削除して新しく作ればいいです。

Google の方はこれで完了です。

functions.php に書き加える

WordPress は通常 wp_mail 関数を使ってメール送信を行います。その設定をアクションフック phpmailer init を使って Gmail の SMTP サーバーに変更します。

  • wp_mail
  • phpmailer_init

phpmailer_init のリンク先にサンプルコードがあります。

以下のコードを functions.php に書き加えます。

function my_phpmailer_example( $phpmailer ) {
    $phpmailer->isSMTP();     
    $phpmailer->Host = 'smtp.gmail.com';  
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = '587';
    $phpmailer->Username = 'yourusername'; // Googleログインユーザ名
    $phpmailer->Password = 'yourpassword'; // Googleアプリパスワード
    $phpmailer->SMTPSecure = 'tls';
//    $phpmailer->From = get_option('admin_email'); // Googleには渡らない?
//    $phpmailer->FromName = get_option( 'blogname' ); // Googleには渡らない?
}
add_action( 'phpmailer_init', 'my_phpmailer_example' );

add_filter( 'wp_mail_from', function( $email ){
    return get_option('admin_email');
});
add_filter('wp_mail_from_name', function( $name ){
    return get_option('blogname');
});

上記コメント行の説明です。

$phpmailer->Username, $phpmailer->Password には Googleアカウントのユーザ名と上で取得したアプリパスワードを入れます。

$phpmailer->From と $phpmailer->FromName はメールの差出人として表示される From: FromName <From> に当たるものですが、ここで設定してもうまくメーラーに渡りません。その場合は、wp_mail の $headers に $headers = ‘From: メールアドレス’ と渡せばいいのですが、それも面倒ですのでフィルターフックを使って書き換えておきます。これをしておかないとデフォルトの差出人メールアドレスが wordpress@yoursite.com になって送信できなくなります。

  • wp_mail_from
  • wp_mail_from_name

これで、wp_mail を使ったメール送信は Google の SMTP サーバーから送信されます。

メール送信チェック

で、これまでの設定のチェックをするのに一番シンプルな方法は何なんでしょう…と、しばし悩んでしまいました(笑)。結局、

wp_mail( $to, $subject, $message );

を実行できればいいわけですので、page-mailtest.php などの固定ページを次のようにつくりテストすることにしました。wordpress を通さない php ファイルではだめですし、ショートコードにするのも面倒ですし、ましてやプラグインなど入れるのもさらに面倒ですし、とにかくこれ以外の方法を思いつきませんでした。

<?php
wp_mail('****@****.com', 'メールテスト', '本文');

これを page-mailtest.php として WordPress のルートに置いて固定ページに設定しアクセスしてみました。ページは真っ白ですが無事に送信できました。

なお、セキュリティの上で $phpmailer の各設定項目を wp-config.php に 定数定義(define)しておく方がいい場合もあります。ただ、管理者ひとり、利用者ひとりであればほとんどリスクは変わらないと思います。

HG 機動戦士ガンダム 水星の魔女 ガンダムエアリアル 1/144スケール 色分け済みプラモデル

HG 機動戦士ガンダム 水星の魔女 ガンダムエアリアル 1/144スケール 色分け済みプラモデル

1,287円(06/01 04:12時点)
Amazon
WordPress:サムネイル付き次の記事/前の記事
WordPress:Fetch(Ajax)でお問い合わせフォーム(プラグインなし)
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/05/25

WordPress:リビジョン削除、回数制限

2023/05/10

WordPress:裏技的サイトリニューアル

2023/04/28

XserverへのSSH接続がエラーになってしまった

2023/04/16

正規表現の最短一致でミスる

2023/04/4

WordPress:公開中サイトをサブディレクトリでリニューアルし公開する

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ215
  • WebTips109
  • javascript98
  • Joomla!88
  • Wordpress70
  • Windows68
  • CSS63
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Google34
  • Plamo33
  • はてなプラグイン25
  • php23
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • Git入門6
  • ConoHa WING6
  • genesis6
  • Python5
  • Android5
  • PC全般4
  • Facebook4
  • スマートフォン4
  • Xserver3
  • Firefox3
  • 静的サイトジェネレーター3
  • SSD3
  • Docker3
  • Blankslate3
  • Twitter2
  • Mactype2
  • GitHub2
  • youtube1
  • はてなブクマ1
  • rails入門1
  • 映画1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com