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!';
};
1 Answer
WordPress uses the wp_mail() function to send mail. It says on the Codex article there that:
For this function to work, the settings SMTP and smtp_port (default: 25) need to be set in your php.ini file.
Also be sure to check that your contact form is sending the required parameters to the wp_mail() function. The required parameters are included on the page in the link above.