XAMPPでメールをテキストファイルに保存する方法

2021/04/02 00:00:00

XAMPPで開発する際に、PHPのメール送信関数 mail() もしくは mb_send_mail() を使うと、エラーが出てしまい困ることがあります。 ちゃんとメールサーバーの設定をすれば良いじゃないかと思うかもですが、 メールサーバーを用意するのは面倒ですし、実際にメールが外部に送信されてしまってもそれはそれで困りものです。

mailtodisk とは?

mailtodisk は sendmail のように振舞いながら、実際にはメールを送信せず、メールの内容をテキストファイルで保存してくれるというものです。 これを使うと、PHPのメール送信関数を呼んだ際のエラーが出なくなりますし、メールも外部には送信されませんし、メールの内容も確認することができます。 何より設定が楽です。 ちなみに XAMPP にオプションでインストールすることができる Fake Sendmail("C:\xampp\sendmail\sendmail.exe") とは別物なので注意。

インストール方法

XAMPP で Apache と PHP をインストールしたらデフォルトで入ってます。 なので、XAMPPをインストールしてあるなら、特に何もしなくても入ってると思います。 XAMPPのインストール先が "C:\xampp" の場合は、"C:\xampp\mailtodisk" フォルダーにあります。

mailtodisk.png

設定方法

PHPのメール送信関数 mail() もしくは mb_send_mail() が呼ばれたら、 mailtodisk にメールが送られるように設定します。 php.ini の sendmail_path を mailtodisk.exe に設定し、Apache を再起動します。

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

出力先

mailtodisk は、実行した場所のフォルダーの配下に mailoutput フォルダーを作成し、そのフォルダーの中にファイルを出力します。

Apache の PHP からメールを送信した場合(つまりHTTP/HTTPSから実行した場合)は、出力先のフォルダーは "C:\xampp\mailoutput" になります。

CLI の PHP(例えばバッチファイル)からメールを送信した場合は、実行したそのフォルダー配下の mailoutput フォルダーになります。 保存されてないなと思ったら、別のフォルダーに保存されていたということが良くあるので注意。

mailoutput.png

セキュリティ制限

メールの出力先 mailoutput フォルダーの容量は 300MB までに制限されます。 これは mailtodisk がストレージ(HDD/SSD等)の容量を使い果たさないようにするためのセキュリティ上の制限となります。 あまり無いとは思いますが、mailoutput フォルダーの容量が 300MB を超えそうなら、不要なファイルを削除して容量を減らしましょう。

ちなみに、実際に 300MB 超えるとどうなるかと言えば、 mailoutput フォルダーに "MAILTODISK_WRITE_RESTRICTION_FOLDER_MORE_THEN_300_MB.txt" というファイルが生成され、 それ以降のメールは mailoutput フォルダーに出力されなくなります。

security_limit.png

参考サイト

関連記事

最近のWebアプリでは、キャッシュやセッションを保存する際に、Redis がよく使われていたりします。しかしながら Redis は XAMPP には含まれていないため、XAMPP から Redis を使うにためには XAMPP の環境に少し手を加える必要があります。そこで、その手順を記載しておきます。いまさら感も多々ありますが、忘れやすい自分への備忘録です。 ...
XAMPP 環境にて作業を行っていたところ、MySQL 接続がやたらと遅く辟易したため、原因を調査してみた。少々ハマってしまったので、ここに書いておきます。誰かの役に立てば幸いだ。ことの発端現象現象としては、PHP から MySQL への接続に1秒以上かかるというもの。ソースコードは下記のたった1行のみ。mysqli_connect('localhost', ...
これが何度目かは分からないけれど、いままで何度も何度もハマっているので、きっとまたハマると思う。なのでここに書いておく。誰かの何かの役に立てば幸いだ。前提条件XAMPP1.7.3環境にPHPUnit3.5をインストール。OSWindowsXAMPP1.7.3PHP5.3.1PEAR1.9.1PHPUnit3.5事前準備PHPUnitをインストールするにはPE ...

記事検索

アーカイブ

2021

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010

RSSフィード