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

この記事は最終更新日から 3年以上 が経過しています。

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 を再起動します。

php.ini
; 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

参考サイト

関連記事

Docker の PHP コンテナで開発する際に、テスト用のメールサーバーを使用すると便利です。メールを外部に送信せずに、メールの動作確認を行うことができます。Mailpit とは?Mailpit はテスト用に開発されたメールサーバーです。Go 言語で実装されています。本物のメールサーバーのように振舞いながらも、メール ...
XAMPP 環境にて作業を行っていたところ、MySQL 接続がやたらと遅く辟易したため、原因を調査してみた。少々ハマってしまったので、ここに書いておきます。誰かの役に立てば幸いだ。ことの発端現象現象としては、PHP から MySQL への接続に1秒以上かかるというもの。ソースコードは下記のたった1行のみ。PHPmysq ...
最近のWebアプリでは、キャッシュやセッションを保存する際に、Redis がよく使われていたりします。しかしながら Redis は XAMPP には含まれていないため、XAMPP から Redis を使うためには XAMPP の環境に少し手を加える必要があります。そこで、その手順を記載しておきます。いまさら感も多々あり ...
この記事は古い内容です。同じ内容の改訂版の記事があります。「XAMPP に ImageMagick をインストールする方法【2023年改訂版】」XAMPP に ImageMagick をインストールする方法がかなりわかりづらく混乱してしまったので、ここにインストール方法を記載しておきます。自分への備忘録です。Image ...

記事検索

最新記事

人気記事

RSSフィード

お知らせ

フィードバック

要望などあれば、お気軽にどーぞ。 不具合やバグを発見した場合も、連絡をいただけると助かります。

匿名でフィードバックする
匿名でフィードバックする

要望などあれば、お気軽にどーぞ。 不具合やバグを発見した場合も、連絡をいただけると助かります。

なお、このフォームから入力された内容について、管理者から返信はできませんので注意してください。 もし、管理者からの返信が必要であれば、X(Twitter) もしくは、お問い合わせより、お願いします。

  • フィードバックの送信が完了しました。