Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Test PHP's mail function from localhost

I need to test a function that uses PHP's mail()
How can I do this without uploading the script to a server and test it online?
What's even more I am developing with no Internet connection at all.
I am on Mac OSX running localhost from XAMPP.

like image 755
FFish Avatar asked Sep 09 '25 16:09

FFish


1 Answers

You don't have to install an MTA on your computer to test PHP's mail() function. On Unix based systems (Linux, *BSD, OS X, etc.) you can set sendmail_path to something like tee mail.out > /dev/null. This will put the emails (including the headers) in a file called mail.out.

Here is an example of how it would work:

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

You can set sendmail_path in your php.ini file. If you want to append emails to the file instead of overwriting each time, you can use tee -a instead of just tee.

like image 105
Daniel Egeberg Avatar answered Sep 12 '25 07:09

Daniel Egeberg