WordPress.org

Forums

wpMandrill
[resolved] Line break tags being injected into Gravity Forms email notifications (7 posts)

  1. cruelmelody
    Member
    Posted 1 year ago #

    Hi,

    I'm using Gravity Forms with wpMandrill, and when email notifications are received by the system, rogue tags keep getting injected above the email content creating a large grey block. I was wondering if anyone else had encountered this problem?

    History of the issue:
    After getting in touch with the Gravity Forms, they've advised me that there's no way to fix this with a CSS override, and that another third party plugin may be causing the issue.

    After doing some detective work, it's definitely wpMandrill causing the problem. When the plugin is disabled and email notifications are tested, the email is formatted correctly and isn't stuffed full of line breaks. When I turn it back on again and retest, the large grey block appears again caused by the line breaks.

    If anyone could suggest a fix, that'd be a great help. I'll raise an internal ticket if need be. Thanks!

  2. chrishajer
    Member
    Posted 1 year ago #

    Did you see this in the FAQ:

    https://wordpress.org/plugins/wpmandrill/faq/

    My emails are broken and show weird CSS code

    In version 1.09, we added a setting that allows you to tell the plugin if you want to replace your line feeds by
    . Try playing with that switch.

    If it works for certain emails but doesn't work for others, you might want to modify this setting using the mandrill_nl2br filter. For example, if you don't want to use this filter for the "forgot password" emails, add something like this to your theme's functions.php file:

    The tag wp_GFCommon::send_email should make this filter apply only to Gravity Forms emails sent by Mandrill:

    add_filter('mandrill_nl2br', 'skip_nl2br_for_gf');
    function skip_nl2br_for_gf($nl2br, $message) {
    	if (in_array('wp_GFCommon::send_email', $message['tags']['automatic'])) {
    		$nl2br = false;
    	}
    	return $nl2br;
    }
  3. bodoggy
    Member
    Posted 1 year ago #

    Hi Chris, I'm working with cruelmelody on this issue.

    I was able to fix the issue by un-ticking this option in wpMandrill settings:

    Replace all line feeds ("\n") by <br/> in the message body?

    The downside is that plain-text emails don't have proper line breaks anymore, but we'll be able to solve that by applying the filters selectively.

    I'll ask cruelmelody to mark this as "resolved".

    Thanks for your assistance!

  4. cruelmelody
    Member
    Posted 1 year ago #

    Thanks for your help, Chris. Much appreciated.

  5. exius
    Member
    Posted 8 months ago #

    Thanks for the thread!

    You guys helped fix my problem as well.

  6. haleeben
    Member
    Posted 8 months ago #

    I've added

    add_filter('mandrill_nl2br', 'skip_nl2br_for_gf');
    function skip_nl2br_for_gf($nl2br, $message) {
    	if (in_array('wp_GFCommon::send_email', $message['tags']['automatic'])) {
    		$nl2br = false;
    	}
    	return $nl2br;
    }

    but I'm still getting the big gaps in Gravity Form emails.

  7. Nick Cernis
    Member
    Posted 6 months ago #

    Here's the code I'm using in my theme's functions.php file to make wpMandrill and Gravity Forms play nicely together so that HTML and plain text emails both work with Mandrill:

    <?php
    
    // Add to functions.php and leave the “Content” box unticked in Settings > Mandrill
    // Be sure to omit the opening <?php tag when copying this code
    
    // Add paragraph breaks to plain text notifications sent by Mandrill
    add_filter('mandrill_payload', 'wpmandrill_auto_add_breaks');
    function wpmandrill_auto_add_breaks($message) {
    
    	$html = $message['html'];
    
    	$is_comment_notification = ( $message['tags']['automatic'][0] == 'wp_wp_notify_moderator' );
    	$is_password_reset = ( $message['tags']['automatic'][0] == 'wp_retrieve_password' );
    	$no_html_found = ( $html == strip_tags($html) ); 
    
    	// Add line breaks and links to messages that don't appear to be HTML
    	if ( $no_html_found || $is_comment_notification || $is_password_reset ) {
    		$html = wpautop($html);
    		$message['html'] = make_clickable($html);
    	}
    
    	return $message;
    
    }

    I'll keep the gist here up to date if I change the code to work around any other issues I find: https://gist.github.com/nickcernis/8b87ac0a875e417b304b

Topic Closed

This topic has been closed to new replies.

About this Plugin

  • wpMandrill
  • Frequently Asked Questions
  • Support Threads
  • Reviews

About this Topic