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.
views:
98answers:
5Edit the php.ini central file with your current mail server for sending out mails...
For example, sendmail...
sendmail_path =/usr/sbin/sendmail
Look for the above line in your php.ini and see if it is commented or not and change it to your working mail server path.
Also if you dont know where the php.ini is, you could always run a php with the above code to see it:
<? phpinfo(); ?>
SIDE NOTES: Make sure your mail server is running and that you can send mails using it from a command line for example. If that is possible and you have changed php.ini it will work just fine.
Here is some more reference to the same question i belive: http://stackoverflow.com/questions/2450589/php-mail-using-sendmail-on-mac-os-x-leopard-10-5-8
Setup a pop3 server in local Machine. Many available for free. and send mails within your local domain using sendmail.
By default its not required to set the sendmail path in Linux. at least I never needed it. just use the mail() function and hit mails on local domain
Hmm. I haven't tried this, but in php.ini you can set "sendmail_path" ... so in theory you could write your own shell script that simply wrote the input into text files, and change your php.ini to use that? Then simply run tests and check text files!
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
.
http://stackoverflow.com/questions/712392/send-email-using-gmail-smtp-server-from-php-page
try above answer.