Send email from PHP to a log file instead of sendmail
From Brian Nelson Ramblings
Send email from PHP to a log file instead of sendmail
Say you want to test email sent from a PHP application on your development environment, and you don’t want to set up sendmail. You can write a little PHP script to replace the sendmail call!
First, create the following file: /usr/local/bin/phpsendmail
vim /usr/local/bin/phpsendmail
Then add the following code to the phpsendmail file
#!/usr/bin/php <?php $logfile = '/var/www/html/protected-directory/mailoutbound.htm'; $log_output = "<p>****" . date('Y-m-d H:i:s') . "****</p>rn"; $handle = fopen('php://stdin', 'r'); $count = 0; while(!feof($handle)) { $count++; $buffer = trim(fgets($handle)); if ($count <= 12) # Output header information $log_output .= $count . ": " . $buffer . "<br>rn"; else # Output body $log_output .= $buffer . "rn"; } //* Write the log file_put_contents($logfile, $log_output, FILE_APPEND); ?>
Now you will want to edit your php.ini or php-fpm pool file and set the sendmamil path
php.ini locate and replace
find:
sendmail_path => /usr/sbin/sendmail -t -i
replace with
sendmail_path = /usr/local/bin/phpsendmail
Next restart apache or php-fpm depending on your setup
/etc/init.d/apache restart
or
/etc/init.d/php-fpm restart
Now you can view the emails from your browser/text file via http://<domainn.tld>/protected-directory/mailoutbound.htm