By default WordPress will send emails as plain text using the content type “text/plain”.
But some plugins, such as Gravity Forms, will send HTML emails.
The issue with this is HTML emails (without the plain text content) are a significant “signal” for spam filters. Making it more likely the emails to end up in the spam folder or to never arrive!
mail-tester.com reports:
MIME_HTML_ONLY Message only has text/html MIME parts
Fortunately there’s an easy solution – a function which will automatically add the plain text content from the HTML content.
The code below shows how to do this. If you haven’t already I suggest you create create a custom plugin for holding the code.
/*
Description: Add plain text content to HTML email
Date: 6 January 2019
Author: IT Support Developer Guides
Author URL: itsupportguides.com
*/
class WPDG_Add_Plain_Text_Email {
function __construct() {
add_action( 'phpmailer_init', array( $this, 'add_plain_text_body' ) );
}
function add_plain_text_body( $phpmailer ) {
// don't run if sending plain text email already
// don't run if altbody is set
if( 'text/plain' === $phpmailer->ContentType || ! empty( $phpmailer->AltBody ) ) {
return;
}
$phpmailer->AltBody = wp_strip_all_tags( $phpmailer->Body );
}
}
new WPDG_Add_Plain_Text_Email();
