エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


XAMPP環境(ローカル環境)の sendmailからPHPメールを送信する設定方法

      2018/03/25

XAMPP環境の sendmailからメール送信する設定

 

XAMPPとは?

 
XAMPPとは、ローカル環境に LAMP環境(Linux、Apache、MySQL、PHP)の環境を簡単に作成し、PHPのプログラム開発を行うために便利なアプリケーションです。
 
XAMPPオフィシャルサイト
 https://www.apachefriends.org/jp/index.html
 
 
ですが、標準の設定ではメールを送信する設定がされていないため、メールを送信するフォームや WordPressのメールを送信する処理を正しく処理することができません。
 
この記事では、Windows環境の XAMPPのメール送信設定をすることで、PHPからメールを送信できる処理を構築します。
 

 
 
ちなみに、今回紹介する仕組みは、ローカルからメールを送信できるようにしているわけではなく、ローカル PCにある sendmailのプログラムから、外部のメール送信の SMTPサーバ(ここでは、Gmailの SMTPサーバ)に接続し、そのサーバ経由でメールを送信している、ということになります。
そのために、XAMPP環境の sendmailの設定をして...といったところまで勉強しながら作ってみたいという方はほかのサイトを探してください!
 
 


 
 

XAMPPのメール送信の設定

 

php.iniの編集

 
PHPの設定ファイルである「php.ini」を編集します。
 
php.iniは「\xampp\php\php.ini」にあります。
 
もしくは、XAMPPのコントロールパネルの「Config」から選択します。
XAMPP環境(ローカル環境)の sendmailからPHPメールを送信する設定方法
 
 
「php.ini」を開いて、下記の個所を修正します。
「mail function」で検索すると分かりやすいでしょう。
 

 
XAMPPのバージョン(PHPのバージョン)によって表示の並びは違いますが、PHP 5.6では上記のようになります。
4行目の「;SMTP=localhost」、6行目の「;smtp_port=25」がコメントアウトされていることを確認し、14行目の「sendmail_path = “\”C:\xampp2\sendmail\sendmail.exe\” -t”」のコメント処理を外します。
 
「php.ini」は、行頭の「;」がコメントにするための記号です。
 
ここの設定で、メールの送信は「sendmail.exe」を利用する、という設定になります。
 
 
また、PHP 5.4では、
14行目の「sendmail_path = “\”\xampp\sendmail\sendmail.exe\” -t”」のコメントを外すのに合わせて、その下にある「sendmail_path = “C:\xampp\mailtodisk\mailtodisk.exe”」行はコメントにする必要があります。
 
そうしないと、せっかく設定した「sendmail_path」の値が元の設定に上書きされてしまいまして、「\Device\Harddisk2\DR2ディスクがありません」のようなエラーがでる要因になってしまいます。
 
 
 

sendmail.iniの編集

 
続いて、「sendmail.exe」の設定ファイルである「sendmail.ini」を編集します。
 
sendmail.iniは「\xampp\sendmail\sendmail.ini」にあります。
 
 
「smtp_server」で検索し、「smtp_server」と「smtp_port」の値を変更します。
下記の例では、元の設定「smtp_server=mail.mydomain.com」「smtp_port=25」をコメントアウトして残していますが、直接変更しても問題ありません。
 
下記の例は、Gmailを利用していますが、自身で契約している SMTPサーバの情報でも問題ありません。
 

 
ここで設定する情報は、最初は Gmailで試してみることをおススメします。
レンタルサーバの場合、サーバによってはうまく動かない場合がありますので、先に確実に動く Gmailで試してみてからの方が無用な時間を費やすことが減るように思います。
 
 
続いて、メールを送信するユーザの「auth_username」「auth_password」を設定します。
「auth_username」で検索すると分かりやすいでしょう。
Gmailの場合、「auth_username」がメールアドレスで、「auth_password」がそのパスワードになりますので、自分の Gmailの情報を編集します。
 

 
 
さらに、「force_sender」を設定します。
「force_sender」で検索すると分かりやすいでしょう。
 
設定する情報は、先の「auth_username」で設定したメールアドレスを編集します。
 

 
 
 

Apacheを再起動

 
php.iniの設定変更をした場合、その設定変更を反映させるためには Apacheを再起動する必要があります。
 
XAMPPのコントロールパネルの Apacheの「Stop」をクリックして、「Start」をクリックしましょう。
 
XAMPP環境(ローカル環境)の sendmailからPHPメールを送信する設定方法
 
 
 

PHPのサンプルプログラムからメールの送信テスト実施

 
前項までで XAMPPの設定が完了しましたので、正しく設定がされているか、メールをテスト送信するプログラムを実行してテストをします。
 
 

メール送信プログラムを設置

 
下記の内容のプログラムをコピペして作成します。
 

 
ファイルを作成する場所は「C:\xampp\htdocs\testmail.php」になるように設置するといいでしょう。
メールアドレスは、実際に受信できるものに書き換えてください。
 
そして、「http://localhost/testmai.php」にアクセスするとメールのテスト送信処理が実行されます。
 
ブラウザの画面に「送信成功」と表示され、編集したメールアドレスにメールが無事に届いていればテスト送信は成功です。
 
 

メール送信プログラムの不具合の確認

 
テスト送信プログラムを実行し、「送信失敗」となった場合や「送信成功」となるもののメールが届かない場合は、エラーログを確認してみてください。
 
エラーログは下記の場所にあります。(過去にエラーが発生していない場合はエラーログファイルは存在していない場合もあります。)
 
C:\xampp\sendmail\error.log
 
 
また、詳細なデバッグ情報を取得したい場合は、「sendmail.ini」にあるコメントアウトになっている「debug_logfile」のコメントを外してみてください。
 

 
ただし、正常に動作するようになったときは、「debug_logfile」のコメント設定を元に戻しておくことをおススメします。
大量のログファイルが生成されていきますので。
 
 

確認画面付きお問い合わせフォームの作り方

 
また、実際のフォームの作成は「CakePHP 2.3で確認画面付きのお問い合わせフォームの作り方」を参考にしてくださいね。
 
 

sendmailが設定されていない環境からメールを送信する方法

 
XAMPP環境などのローカル環境からメールを送信する方法として、ローカル環境にメール送信の環境を整えるという方法もありますが、ローカル環境の sendmailを使わずにメールを送信する方法もあります。
 
その方法として「Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説」と言う記事を書いていますので参考にしてください。
これは、サーバの sendmailで送るとスパム判定さてしまうので、それの対処方法を書いた記事ではありますが、外部の SMTPサーバを経由してメールを送信する方法ですので、ローカル環境などのメールを送信する環境がないサーバからも送信することが出来る方法になります。
 
 

WordPressからローカルの sendmailを使わずメールを送信する方法

 
今回紹介した内容は、ローカルの XAMPP環境からメールを送信できるようにする設定ですが、WordPressの場合は、プラグインを使うと XAMPP環境の sendmailの設定ができていなくてもメールの送信を行うことができます。
 
そのプラグインは複数あり、WP Mail SMTP、WP SMTP、Easy WP SMTPといったものになりますが、下記にそれらの対応記事を書いていますので、あわせて参考にしてください。
 WP Mail SMTP、WP SMTP、Easy WP SMTPでWordPressのメールのスパム判定を回避
 
 

XAMPPの関連記事

WindowsのXAMPPのPHPではstrptimeは使用不可。代替はdate_parse_from_formatを使う
XAMPP本体や PHPのバージョンアップをせずにもう一つXAMPPをインストールして複数の環境を共存させる方法
XAMPPとは?パソコンにローカル LAMP環境を簡単に設置する方法を詳細解説
XAMPPにVirtualHostを設定しドメイン、ドキュメントルートを設置する方法
XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法
MySQLのタイムゾーン(mysql_tzinfo_to_sql)の設定方法・XAMPP環境の解説も
XAMPPのWordPressの更新でFatal error: Maximum execution time of 30 seconds exceededのエラーが発生して失敗する場合の対処方法
XAMPP環境で WP-DBMANAGERでの復元でDBが壊れる
XAMPPの Apacheが起動しなくなった場合の対処方法
XAMPP環境(ローカル環境)の sendmailからPHPメールを送信する設定方法
 
その他の「xampp」に関する記事一覧
 
 

 - システム開発関連技術

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

IEのHTMLソースを秀丸表示で共有メモリへのアクセスが拒否されましたで開けない問題への対処方法

Windows7の IEで HTMLソースを秀丸で表示する際に「共有メモリへのアクセスが拒否されました」のエラーが表示される原因と解決方法の説明。

秀丸の現在開いているファイル名をフルパス付で取得する方法をマクロで作成

秀丸で開いているファイル名をフルパス付で取得するマクロを作成。たった1行のマクロながらとっても便利。プログラムを作る方なら作成して置いて損はないマクロですね。

XAMPPとは?パソコンにローカル LAMP環境を簡単に設置する方法を詳細解説
XAMPPとは?パソコンにローカル LAMP環境を簡単に設置する方法を詳細解説

パソコンに LAMP環境を簡単に構築することができるパッケージ「XAMPP」。そのインストール方法を詳細解説。インストール後の不具合やカスタマイズ方法についても説明。

Windows 10パソコンで日付、時間がずれる!原因と時計を合わせる解決方法
Windows 10パソコンで日付、時間がずれる!原因と時計を合わせる解決方法

Windows 10のパソコンでスリープから復帰すると日付がズレる不具合が発生。その時の対応方法の時計の設定やマザーボードの電池の交換の方法を紹介。プラスαの不具合の原因と対応方法を紹介。

Windowsに接続したBluetoothキーボード、マウスの突然動かない!つながらない!問題
Windowsに接続したBluetoothキーボード、マウスの突然動かない!つながらない!問題

Bluetooth機器がつながらなくなった!そんなときの対応方法についての解説。Bluetooth接続の電源を勝手にOFFにしないようにする設定を中心に、その他の不具合とその対処方法についても紹介。

PHPを勉強するための環境を構築するにはXAMPPが最適

PHPを勉強する環境としてローカル環境を構築するには XAMPPが最適。その解説です。

XAMPPの Apacheが起動しなくなった場合の対処方法

ローカルのXAMPP環境で Apacheが起動しなくなる原因の多くはポートのダブり。その対処方法です。

XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法
XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法

XAMPPを起動する際、Apacheのポートがバッティングして起動しない場合がある。XAMPP側のポートを変更する方法、バッティングしているプログラムを変更する方法の2種類の対応方法を解説。

Windowsで環境変数のパスの設定方法解説。不具合時のチェックポイントも紹介
Windowsで環境変数のパスの設定方法解説。不具合時のチェックポイントも紹介

Windowsで環境変数であるパス(path)の設定方法の解説。標準的な解説に加え、うまくいかない場合のチェック方法や別の設定方法の解説も。うまく設定できない状況は極力なくなるはず。

RSA暗号の仕組みがすっきりと分かった瞬間

RSA暗号の仕組みがすっきりと分かったその説明を交えながら、RSA暗号の解説をします。