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」から選択します。
「php.ini」を開いて、下記の個所を修正します。
「mail function」で検索すると分かりやすいでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[mail function] ; For Win32 only. ; http://php.net/smtp ;SMTP=localhost ; http://php.net/smtp-port ;smtp_port=25 ; For Win32 only. ; http://php.net/sendmail-from ;sendmail_from = me@example.com ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path sendmail_path = "\"C:\xampp2\sendmail\sendmail.exe\" -t" |
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サーバの情報でも問題ありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[sendmail] ; you must change mail.mydomain.com to your smtp server, ; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup) ; emails delivered via IIS's pickup directory cause sendmail to ; run quicker, but you won't get error messages back to the calling ; application. ;smtp_server=mail.mydomain.com smtp_server=smtp.gmail.com ; smtp port (normally 25) ;smtp_port=25 smtp_port=587 |
ここで設定する情報は、最初は Gmailで試してみることをおススメします。
レンタルサーバの場合、サーバによってはうまく動かない場合がありますので、先に確実に動く Gmailで試してみてからの方が無用な時間を費やすことが減るように思います。
続いて、メールを送信するユーザの「auth_username」「auth_password」を設定します。
「auth_username」で検索すると分かりやすいでしょう。
Gmailの場合、「auth_username」がメールアドレスで、「auth_password」がそのパスワードになりますので、自分の Gmailの情報を編集します。
1 2 3 4 |
; if your smtp server requires authentication, modify the following two lines auth_username=test@gmail.com auth_password=testtesttest |
さらに、「force_sender」を設定します。
「force_sender」で検索すると分かりやすいでしょう。
設定する情報は、先の「auth_username」で設定したメールアドレスを編集します。
1 2 3 4 5 |
; force the sender to always be the following email address ; this will only affect the "MAIL FROM" command, it won't modify ; the "From: " header of the message content force_sender=test@gmail.com |
Apacheを再起動
php.iniの設定変更をした場合、その設定変更を反映させるためには Apacheを再起動する必要があります。
XAMPPのコントロールパネルの Apacheの「Stop」をクリックして、「Start」をクリックしましょう。
PHPのサンプルプログラムからメールの送信テスト実施
前項までで XAMPPの設定が完了しましたので、正しく設定がされているか、メールをテスト送信するプログラムを実行してテストをします。
メール送信プログラムを設置
下記の内容のプログラムをコピペして作成します。
1 2 3 4 5 |
if (mb_send_mail('test@example.com', 'メールタイトル', 'メール本文')) { echo '送信成功'; } else { echo '送信失敗'; } |
ファイルを作成する場所は「C:\xampp\htdocs\testmail.php」になるように設置するといいでしょう。
メールアドレスは、実際に受信できるものに書き換えてください。
そして、「http://localhost/testmai.php」にアクセスするとメールのテスト送信処理が実行されます。
ブラウザの画面に「送信成功」と表示され、編集したメールアドレスにメールが無事に届いていればテスト送信は成功です。
メール送信プログラムの不具合の確認
テスト送信プログラムを実行し、「送信失敗」となった場合や「送信成功」となるもののメールが届かない場合は、エラーログを確認してみてください。
エラーログは下記の場所にあります。(過去にエラーが発生していない場合はエラーログファイルは存在していない場合もあります。)
C:\xampp\sendmail\error.log
また、詳細なデバッグ情報を取得したい場合は、「sendmail.ini」にあるコメントアウトになっている「debug_logfile」のコメントを外してみてください。
1 2 3 4 |
; create debug log as debug.log (defaults to same directory as sendmail.exe) ; uncomment to enable debugging ;debug_logfile=debug.log |
ただし、正常に動作するようになったときは、「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
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
Windowsで環境変数のパスの設定方法解説。不具合時のチェックポイントも紹介
Windowsで環境変数であるパス(path)の設定方法の解説。標準的な解説に加え、うまくいかない場合のチェック方法や別の設定方法の解説も。うまく設定できない状況は極力なくなるはず。
-
RSA暗号の仕組みがすっきりと分かった瞬間
RSA暗号の仕組みがすっきりと分かったその説明を交えながら、RSA暗号の解説をします。
-
Windows 10パソコンで日付、時間がずれる!原因と時計を合わせる解決方法
Windows 10のパソコンでスリープから復帰すると日付がズレる不具合が発生。その時の対応方法の時計の設定やマザーボードの電池の交換の方法を紹介。プラスαの不具合の原因と対応方法を紹介。
-
XAMPPにVirtualHostを設定しドメイン、ドキュメントルートを設置する方法
XAMPPにVirtualHostを設定し、DocumentRootを設置する方法を2つ紹介。ポートを指定してアクセスする方法とhostsを設定してドメインでアクセスする方法。エラーの解消方法も解説。
-
Windowsのメモリ不足はUSBメモリに仮想メモリをおいて高速化
Windowsでメモリ不足の時はUSBメモリ上に仮想メモリ(ページングファイル)設定で解決します。
-
秀丸の現在開いているファイル名をフルパス付で取得する方法をマクロで作成
秀丸で開いているファイル名をフルパス付で取得するマクロを作成。たった1行のマクロながらとっても便利。プログラムを作る方なら作成して置いて損はないマクロですね。
-
XAMPP本体や PHPのバージョンアップをせずにもう一つXAMPPをインストールして複数の環境を共存させる方法
パソコンに簡単に LAMP環境を構築することができるパッケージソフト「XAMPP」。XAMPPのバージョンアップや、PHPのバージョンに合わせて複数の環境を構築する場合の手順を解説。
-
WindowsXPから Windows7にアップグレードして分かったこと
WindowsXPから 7にアップグレードする際に不安だったバックアップ、ドライバ、32Bit版 64Bit版について書いています。
-
IEのHTMLソースを秀丸表示で共有メモリへのアクセスが拒否されましたで開けない問題への対処方法
Windows7の IEで HTMLソースを秀丸で表示する際に「共有メモリへのアクセスが拒否されました」のエラーが表示される原因と解決方法の説明。
-
Windowsで .htaccessファイルを生成する方法を 5つ紹介
Windowsでは .htaccessファイルを生成するのは簡単ではない。その原因といくつかの生成方法を解説。新しくファイルを作る場合は「名前をつけて保存」すれば簡単。