I am developing a WordPress site on a vagrant box and have installed postfix in order to test email notifications.
At this guest OS (Ubuntu) level, I am able to end a test email:
echo "Test mail from postfix" | mail -s "Test Postfix" my@email.address
This works and I receive the email. As far as I know postfix uses the sendmail binary and so I would expect WordPress to send emails successfully.
However, my contact form notifications are not being received. Is there a way to check/debug email sending in WordPress or verify which mail function it is using?
UPDATE
So after a bit of digging I discovered that wp_mail()
uses PHPMailer. If I debug the wp_mail()
function using this test script I see that PHPMailer is throwing an exception:
Could not instantiate mail function.
// Set $to as the email you want to send the test to
$to = "myreal@email.address.com";
// No need to make changes below this line
// Email subject and body text
$subject="wp_mail function test";
$message="This is a test of the wp_mail function: wp_mail is working";
$headers[] = 'From: Me Myself <myreal@email.address.com>';
// Load WP components, no themes
define('WP_USE_THEMES', false);
require('wp/wp-load.php');
// Call the wp_mail function, display message based on the result.
if( wp_mail( $to, $subject, $message, $headers ) ) {
// the message was sent...
echo 'The test message was sent. Check your email inbox.';
} else {
// the message was not sent...
echo 'The message was not sent!';
};