PHPのmail()を使用する関数をテストする必要があります
スクリプトをサーバーにアップロードせずにこれをオンラインでテストするにはどうすればよいですか?
インターネット接続がまったくない状態でさらに開発しています。
XAMPPからlocalhostを実行しているMac OSXを使用しています。
PHPのmail()
関数をテストするために、コンピュータにMTAをインストールする必要はありません。 Unixベースのシステム(Linux、* BSD、OS Xなど)では、sendmail_path
をtee 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
を使用できます。
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
テストのための素晴らしくシンプルなソリューション:
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
うーん。私はこれを試していませんが、php.iniで「sendmail_path」を設定できます...理論的には、入力をテキストファイルに書き込むだけの独自のシェルスクリプトを記述し、それを使用するようにphp.iniを変更できますか?次に、テストを実行してテキストファイルを確認します。
Windowsを使用していて、WAMP/UWAMP/XAMPPなどを使用していて、メールをテストする必要がある場合、Papercutは一見の価値があります。
https://github.com/ChangemakerStudios/Papercut
Php.iniのSMTP設定をデフォルト(localhost/25)のままにしておけば、そのまま機能します。電子メールクライアントのように見え、メッセージのすべての部分/詳細が個別のセクションに表示されます。
ローカルマシンにpop3サーバーをセットアップします。多くは無料でご利用いただけます。 sendmailを使用してローカルドメイン内でメールを送信します。
デフォルトでは、Linuxでsendmailパスを設定する必要はありません。少なくとも私はそれを必要としませんでした。 mail()関数を使用して、ローカルドメインでメールをヒットするだけです
@ 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