【2023年版】XAMPPでGmailを送信する方法

この記事では「XAMPP から Gmail 経由でメール送信する方法」を紹介しています。
XAMPP には Sendmail がインストールされているので、Gmail の情報を登録すれば簡単にメール送信を行うことができます。
ローカル環境でメール送信できるようになるので、設定しておくと便利です。
Sendmailがインストールされているか確認
C:\xampp フォルダに sendmail フォルダがあるかを確認します。

このフォルダが存在しない場合は、以下のどちらかで用意してください。
- Fake Sendmail をこちらのページでダウンロードして XAMPP フォルダに置く
- XAMPPを再インストールする
XAMPP インストール時に Fake Sendmail にチェックをいれておくと、一緒にインストールされます。

Gmailのアプリパスワードを取得
Gmail 経由でメール送信するために「メールアドレスとアプリパスワード」を用意する必要があります。
アプリパスワードは2段階認証を有効にすると取得できるもので、ログインパスワードとは異なるので注意しましょう。
Gmail 画面右上のアイコンをクリックして「Googleアカウントを管理」をクリックします。

左側メニューの「セキュリティ」をクリックして、2段階認証プロセスが有効になっているか確認します。有効になっていない場合はクリックして指示に従って有効化してください。
有効になっている場合は「2段階認証プロセス」をクリックします。

画面下部にある「アプリ パスワード」をクリックします。

分かりやすいアプリ名を入力して「作成」をクリックします。

ここに表示されたアプリパスワードをあとで使うので、この画面を開いておくかメモしておいてください。

SendMailの設定
php.ini
C:/xampp/php/php.ini をメモ帳などで開きます。

1121行目あたりの [mail function] という箇所を見つけます。

;sendmail_path という箇所を次のように書き換えます。先頭の ; も忘れずに消してください。
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

ファイルを保存して閉じます。
sendmail.ini
次に C:/xampp/sendmail/sendmail.ini をメモ帳などで開きます。

16行目あたりの [sendmail] という箇所を見つけます。

次の3箇所を変更・確認します。
① smtp_server
;smtp_server=mail.mydomain.com
smtp_server=smtp.gmail.com
行の先頭に ; を付けるとコメントアウトすることができます。変更前の設定を残しておきたい場合はこのように書くのがオススメです。
② smtp_port
;smtp_port=25
smtp_port=587
③ smtp_ssl
smtp_ssl=auto
現時点では以下のようになっています。

画面を少しスクロールすると auth_username, auth_password があります。
Gmail のメールアドレスと最初に取得したアプリパスワードを入力してください。
パスワードはスペースなしで abcdabcdabcdabcd のように入力します。

全て入力できたら保存して閉じます。
XAMPP の再起動
変更を反映するために XAMPP を再起動します。
コントロールパネルから Apache を一度 Stop して再度 Start します。

メール送信チェック
最後にメールが送信されるか確認しておきましょう。
htdocs フォルダに mail.php のようなファイルを作成して、以下のコードを書きます。
2行目の $to(送信先メールアドレス)は変更してください。
<?php
$to = '【送信先のメールアドレスを入力】';
$subject = 'お疲れさまでした!';
$message = 'Sendmailの設定が完了しました。';
$header = "From:test@test.com\r\n";
echo (mb_send_mail($to, $subject, $message, $header)) ? '成功' : '失敗';
?>
ブラウザで http://localhost/mail.php のようにファイルを開きます。
このようにメールが届けば成功です!

メールが届かない場合は
- 迷惑メールフォルダ
- php.ini と sendmail.ini の設定
をご確認ください。
とても参考になりました。
ありがとうございます。
「1121行目あたりの [main function] という箇所を見つけます。」
とありますが、main functionではなく、mail functionですね。
書き直す機会があれば、訂正されてはどうでしょうか。
当サイトを見つけて頂きありがとうございます!
間違いのご指摘もありがとうございました。
さっそく修正させて頂きました!