15

How do I change notification emails address from WordPress @mydomain.net to something else.

I want to do this because WordPress @mydomain.net ends up getting flagged as junk mail.

Thanks

Daniel

3
  • 1
    Why not add the address to your safe senders list ? then it won't end up in the junk mail.
    – t31os
    Mar 18, 2011 at 12:31
  • 1
    That would work for me but not my users.
    – user4030
    Mar 19, 2011 at 2:54
  • That's fair enough, it wasn't clear that you weren't only referring to yourself in the opening question.
    – t31os
    Mar 19, 2011 at 9:13

4 Answers 4

23

I use a very similar approach like John P Bloch and Bainternet, just a little bit more flexible, so I don’t have to change the mail address for any client:

<?php # -*- coding: utf-8 -*-
/*
 * Plugin Name: Filter System From Mail
 * Description: Sets the WP from mail address to the first admin’s mail and the from name to blog name.
 * Version:     2012.08.30
 * Author:      Fuxia Scholz
 * Author URI:  https://fuxia.me
 * License:     MIT
 */

if ( ! function_exists( 't5_filter_system_from_mail' ) )
{
    /**
     * First admin's e-mail address or blog name depending on current filter.
     *
     * See wp-includes/pluggable.php::wp_mail()
     *
     * @param  $input Name or email address
     * @return string
     */
    function t5_filter_system_from_mail( $input )
    {
        // not the default address, probably a comment notification.
        if ( 0 !== stripos( $input, 'wordpress' ) )
            return $input; // Not auto-generated

        return get_option( 'wp_mail_from' === current_filter()
            ? 'admin_email' : 'blogname' );
    }

    add_filter( 'wp_mail_from',      't5_filter_system_from_mail' );
    add_filter( 'wp_mail_from_name', 't5_filter_system_from_mail' );
}
3
  • 6
    Very elegant solution. Nice! Mar 21, 2011 at 17:51
  • @fuxia I'm a Wordpress novice. Where does this code go? Is this a plain new plugin? If it is, how do I install it? And t5_ is this your personal plugin prefix? Or does it matter somehow? Dec 17, 2018 at 7:51
  • @LorenzMeyer Yes, a separate PHP file, saved in the plugin directory of your installation. There you can activate it. t5_ was my personal prefix back then. :)
    – fuxia
    Dec 17, 2018 at 10:53
9

There's a great plugin that does this for you called Send From. However, if you want to roll this yourself, it's dead simple. To change the email address add a filter on 'wp_mail_from' like so:

function just_use_my_email(){
  return '[email protected]';
}

add_filter( 'wp_mail_from', 'just_use_my_email' );

And you can also change the sender's name using the 'wp_mail_from_name' filter like so (this is entirely optional):

function just_use_my_email_name(){
  return 'My Real Name';
}

add_filter( 'wp_mail_from_name', 'just_use_my_email_name' );

Just swap the fake values for your real email address and you're good to go.

4

here:

    //email from name function
function my_wp_mail_from_name($name) {
    return 'Name';
}

//email from email function
function my_wp_mail_from($content_type) {
  return '[email protected]';
}

add_filter('wp_mail_from','my_wp_mail_from');
add_filter('wp_mail_from_name','my_wp_mail_from_name');

Change Name to the name you want and [email protected] to the email address you want. but if you change the email address most anti span filter will block or spam your mail for spoofing.

1
  • I used Send Form and it works as advertised. I also created an email address [email protected] and configured Send Form to be use it for automated site notifications. The test email I sent to my test user account was not flagged by the the spam filter. Success! Now I have to test with my users. Thanks!
    – user4030
    Mar 19, 2011 at 2:52
4

The existing answers are a better way to do this, however there is an alternative I'd like to mention.

add_action('phpmailer_init','modify_phpmailer');

function modify_phpmailer($phpmailer) {

    $phpmailer->From = "Full Name";
    $phpmailer->FromName = "[email protected]";

    $phpmailer->AddReplyTo("[email protected]");
}

This happens after the *wp_mail_from* and *wp_mail_from_name* filters. So with this you can force a change and prevent other plugins from modifying it. You can also work directly with the phpmailer object and do things such as adding a reply to address (shown above)