Support » Fixing WordPress » Fix default email & sender

  • Resolved KoolPal

    (@koolpal)


    Instead of using some generic email ID for notifications
    From name: WordPress
    From address: wordpress@your-domain.com

    Why not give an option in settings to either
    1. Use Site Title & admin email
    OR
    2. Add own email information?

    like this

    Invariably this generic emails bounces as we DO NOT have such email IDs and there is no point of creating such IDs

    Currently we end up playing around in code or installing plugins like https://wordpress.org/plugins/wp-simple-mail-sender which have not been updated.

Viewing 4 replies - 1 through 4 (of 4 total)
  • You can do this by inserting the following code into the functions.php file of your child theme

    
    	public function wp_mail_from($from) {
    		// Get the site domain and get rid of www.
    		// see wp_mail() in pluggable.php
    		$sitename = strtolower($_SERVER['SERVER_NAME']);
    		if (substr($sitename, 0, 4) == 'www.') {
    			$sitename = substr($sitename, 4);
    		}
    
    		if ($from === 'wordpress@' . $sitename) {
    			$from = 'support@example.com';
    		}
    
    		return $from;
    	}
    
    	public function wp_mail_from_name($from_name) {
    		if ($from_name === 'WordPress') {
    			$from_name = 'Example';
    		}
    
    		return $from_name;
    	}
    
    // Hooking up our functions to WordPress filters 
    add_filter( 'wp_mail_from', 'wpb_sender_email' );
    add_filter( 'wp_mail_from_name', 'wpb_sender_name' );
    
    

    or if you do not want to set up a child theme try inserting the code in your site by using the My Custom Functions plugin: https://wordpress.org/plugins/my-custom-functions/

    Don’t forget to change the two parts of this code that say Example and support@example.com.

    Hope this helps; once you have found a solution you are happy with kindly tag this thread as resolved.

    @binarywc

    The objective of this post was to get the WordPress team to fix this idiotic hardcoding they have done.

    All users of WP should NOT be forced to use an plugin or play around with code from day one.

    Thanks for this code.

    I found a simpler one which reuses existing information and uses site admin email address and the site title

    /**
    * change WordPress default FROM Name & email address
    **/
    add_filter('wp_mail_from', 'new_mail_from');
    add_filter('wp_mail_from_name', 'new_mail_from_name');
    function new_mail_from($old) {
    $email = get_option( 'admin_email' );
    return $email;
    }
    function new_mail_from_name($old) {
    $site_name = get_option( 'blogname');
    return $site_name;
    }
    

    Good luck getting them to make such a change. I’ve learned over my ten years of using WordPress that they do not change things because one person thinks they should, typically they don’t even change things if 1,000 people think they should. They are to website software what Microsoft is to computer software. They will do things their way until their way is not working anymore. Don’t get me wrong… I agree with your sentiments that these options should be there by default but others have suggested it many times over the years and they have not added it as default options yet.

    The code you found changes the name and email address on ALL emails sent by WordPress… including the ones sent from other plugins such as CF7 and WooCommerce which both let you designate the from info. Whereas my code only changes the from info for the default WordPress notifications.

    Happy coding!

    Hey @binarywc,

    Thanks a lot for clarifying the difference between your code and the code I found.

    I will try to use your code and reference using site admin email address and the site title.

    I prefer reusing site admin email address and the site title as it enables me to change settings only at one place rather than remember to change in the code.

    I managed to get this at https://wordpress.org/plugins/personal-email/ and the code at https://github.com/sheabunge/personal-email/blob/master/personal-email.php:

    function personal_email_from( $from_email ) {
    	/* Calculate the default address */
    	$sitename = strtolower( $_SERVER['SERVER_NAME'] );
    	if ( 'www.' === substr( $sitename, 0, 4 ) ) {
    		$sitename = substr( $sitename, 4 );
    	}
    	/* Check that we don't effect emails not sent with the default address */
    	if ( 'wordpress@' . $sitename === $from_email ) {
    		$from_email = get_bloginfo( 'admin_email' );
    	}
    	return $from_email;
    }
    add_filter( 'wp_mail_from', 'personal_email_from' );
    function personal_email_from_name( $from_name ) {
    	if ( 'WordPress' === $from_name ) {
    		$from_name = get_bloginfo( 'name' );
    	}
    	return $from_name;
    }
    add_filter( 'wp_mail_from_name', 'personal_email_from_name' );

    I echo your sentiments about WordPress core team’s behaviour and continue to express my feelings with the hope that someday, something may change. If we keep silent, it just encourages them.

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Fix default email & sender’ is closed to new replies.