web-dev-qa-db-ja.com

ローカルホストからPHPのメール機能をテストする

PHPのmail()を使用する関数をテストする必要があります
スクリプトをサーバーにアップロードせずにこれをオンラインでテストするにはどうすればよいですか?
インターネット接続がまったくない状態でさらに開発しています。
XAMPPからlocalhostを実行しているMac OSXを使用しています。

23
FFish

PHPのmail()関数をテストするために、コンピュータにMTAをインストールする必要はありません。 Unixベースのシステム(Linux、* BSD、OS Xなど)では、sendmail_pathtee mail.out > /dev/nullのように設定できます。これにより、電子メール(ヘッダーを含む)がmail.outというファイルに配置されます。

これがどのように機能するかの例です:

daniel@daniel-laptop:~$ cat | php -d sendmail_path='tee mail.out > /dev/null'
<?php
mail('[email protected]', 'the subject', 'the body');
?>
daniel@daniel-laptop:~$ cat mail.out
To: [email protected]
Subject: the subject
X-PHP-Originating-Script: 1000:-


the body

sendmail_pathファイルにphp.iniを設定できます。毎回上書きするのではなく、メールをファイルに追加する場合は、teeの代わりにtee -aを使用できます。

52
Daniel Egeberg

Apacheからのメール送信をテストするには、次の手順を実行します

メールを保存するフォルダを作成します。

/home/username/Documents/TestEmails

Apacheに許可を与えます。 Documentsフォルダから、

Sudo chgrp -R www-data TestEmails

Php.iniファイルを変更します。

/etc/php5/Apache2/php.ini

sendmail_pathを設定する

sendmail_path ='cat > /home/username/Documents/TestEmails/mail.txt'

Apace2を再起動します

Sudo service Apache2 restart
8
Xavier John

テストのための素晴らしくシンプルなソリューション:

http://blogs.bigfish.tv/adam/2009/12/03/setup-a-testing-mail-server-using-php-on-mac-os-x/ 更新されたリンク: https://github.com/ifunk/smtp-catcher

5
biziclop

うーん。私はこれを試していませんが、php.iniで「sendmail_path」を設定できます...理論的には、入力をテキストファイルに書き込むだけの独自のシェルスクリプトを記述し、それを使用するようにphp.iniを変更できますか?次に、テストを実行してテキストファイルを確認します。

1
James

Windowsを使用していて、WAMP/UWAMP/XAMPPなどを使用していて、メールをテストする必要がある場合、Papercutは一見の価値があります。

https://github.com/ChangemakerStudios/Papercut

Php.iniのSMTP設定をデフォルト(localhost/25)のままにしておけば、そのまま機能します。電子メールクライアントのように見え、メッセージのすべての部分/詳細が個別のセクションに表示されます。

1
trapper_hag

ローカルマシンにpop3サーバーをセットアップします。多くは無料でご利用いただけます。 sendmailを使用してローカルドメイン内でメールを送信します。

デフォルトでは、Linuxでsendmailパスを設定する必要はありません。少なくとも私はそれを必要としませんでした。 mail()関数を使用して、ローカルドメインでメールをヒットするだけです

0
Neel Basu

@ Daniel-Egebergが提供した回答に基づいて、これはUbuntu 18.04で私にとってうまくいったものです:

/etc/php/7.2/Apache2/php.iniを開いて設定します:

sendmail_path = 'tee /path/to/file/mail.out'

再開:

SudoサービスApache2の再起動

次に/path/to/file/mail.outを作成し、そのアクセス権を変更しました。

chmod 666 /path/to/file/mail.out

0
chimeraha