2021-06-15

ローカル開発環境XAMPPにメール送信機能を実装する(Windows編)

PHPに関する記事

Windowsのローカル開発環境にXAMPPを使用しています。
インストール直後、デフォルトの状態ではメールサーバの設定がされていないため、アプリケーションからのメール送信を行うことができません。そのため、アプリケーションの開発に先立ち、XAMPPの設定を行う必要があります。

PHPのsendmail関数を利用して、メールが送信できる状態に設定します。なお、メールの送信サーバはGmailまたはYahoo!メールを利用したいと思います。事前にGoogleまたはYahoo!アカウントの用意してください。

xamppの設定ファイルを変更

XAMPPのバージョンによって、設定ファイルの内容が多少異なるかもしれませんが、環境に合わせて読み替えてください。

php.iniの変更

xampp\php\php.iniを開き、1100行目あたり。sendmail_pathで検索してください。

;sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

XAMPPのバージョンによっては;sendmail_path =と記述されていない場合があるかもしれません。その場合はご自身の環境に合わせて、sendmailの実行ファイルへのパスを記入してください。

sendmail.iniの変更

xampp\sendmail\sendmail.iniを開き、利用するサービス(GmailまたはYahoo!メール)に合わせて、下記の設定を行ってください。

Gmailの場合

Gmailを使用してメールを送信する場合は、以下のようにアカウント情報を入力してください。

smtp_server=smtp.gmail.com

smtp_port=587

auth_username=(Gmailメールアドレス)
auth_password=(Googleアカウントのパスワード)

Yahoo!メールの場合

Yahoo!メールを使用してメールを送信する場合は、以下のようにアカウント情報を入力してください。

smtp_server=smtp.mail.yahoo.co.jp

smtp_port=587

auth_username=(Yahoo!アカウントのユーザ名 @yahoo.co.jpは不要)
auth_password=(Yahoo!アカウントのパスワード)

Apacheの再起動

php.iniとsendmail.iniのファイル編集が完了したらApacheの再起動を行う必要があります。変更した設定を反映させましょう。Apacheの再起動はXAMPPのコントロールパネルから簡単に行えます。

稼働中のApacheを一度停止する

その後再度Apacheを起動する

Gmailアカウントの設定

Gmailをメール送信に使用する場合は、別途Google側の設定が必要です。

経由でメールを送信する場合、上記で設定したGmailアカウントで安全性の低いアプリにアクセスし、「安全性の低いアプリの許可」を有効にしてください。有効にしないとGoogle側のセキュリティに引っ掛かり、メールを送信することができません。

https://myaccount.google.com/lesssecureapps

動作確認

以下のスクリプトを記載したphpファイルをローカル開発環境に設置し、メールを送信できるか確認してください。

sendmail_test.php

mb_language("Japanese");
mb_internal_encoding("UTF-8");

$to = 'to@example.com'; //送信先アドレス
$title = 'メール送信テスト';
$message = 'これはメールの送信テストです';
$headers = 'From: from@example.com'; //送信元アドレス

if (mb_send_mail($to, $title, $message, $headers)) {
    echo "メール送信成功です";
} else {
    echo "メール送信失敗です";
}

to@example.comを確認し、メールが届いていれば問題ありません。
ローカル開発環境でフォームの動作確認ができれば非常に便利ですね。