web-dev-qa-db-de.com

Wie ändere ich die für die Registrierung verwendete E-Mail-Adresse?

Ich hätte gerne eine andere E-Mail-Adresse als die, mit der der Website-Administrator Registrierungs-E-Mails und E-Mail-Benachrichtigungen gesendet hat. Angenommen, ich habe WP mit [email protected] installiert, benötige jedoch alle Registrierungs- und Benachrichtigungs-E-Mails, die von [email protected] gesendet wurden.

Mir wurde gesagt, dass ich die E-Mail-Adresse meines Kontos über das Dashboard WP Einstellungen> Allgemein ändern kann, aber ich habe die Option für mehrere Standorte aktiviert, sodass die Option jetzt bei Netzwerkeinstellungen angezeigt wird > Network Admin Email , ich konnte jedoch keine Möglichkeit finden, eine andere E-Mail-Adresse nur für Registrierungen und Benachrichtigungen in den Optionen festzulegen, die in den Einstellungen angezeigt werden.

Außerdem wurde ich darauf hingewiesen, dass ich mit SMTP verschiedene E-Mail-Adressen mit Google Mail verarbeiten kann, aber mein Server sich hinter Cloudflare befindet, und ich habe das SendGrid-Plugin im API-Modus installiert, da ich die IP-Adresse meines realen Servers mit dem SMTP-Plugin verwende würde in der E-Mail-Kopfzeile mit SMTP gesendet werden.

1
rraallvv

Da Sie SMTP aufrufen, erwähne ich, dass Sie diese Entscheidung wahrscheinlich treffen müssenbevorSie entscheiden, wie Sie mit Ihren Absenderadressen umgehen, weil letztendlich die Richtung, in die Sie damit gehen wird wahrscheinlich beeinflussen, wie Sie mit der "von" -Adresse umgehen sollten.

Der "einfache" Ansatz besteht darin, nur die "Von" -Adresse zu filtern - wenn Sie SMTP nicht zum Senden verwenden.

So sieht das aus:

/**
 * Start by getting the subject line of the notification
 * email. This assumes the use of the use of the WP default,
 * so if some other process of registration is used, then
 * change accordingly.
 */
add_filter( 'wp_new_user_notification_email', 'my_get_notification_subject' );
function my_get_notification_subject( $args ) {
    global $my_notifiction_subject;
    $my_notifiction_subject = $args['subject'];
    return $args;
}

/**
 * Filter for wp_mail so that we can check the subject line
 * of the email being sent against the value of the default
 * notification email (set in the filter above). If the 
 * message is the notification email, then set a global 
 * that we can check in the "from" and "from_name" filters
 * to change the "from" info.
 */
add_filter( 'wp_mail', 'my_check_wp_mail' );
function my_check_wp_mail( $args ) {
    // Needed globals.
    global $my_notifiction_subject, $my_change_from;
    // Start with setting change "from" notification to false.
    $my_change_from = false;
    if ( isset( $my_notifiction_subject ) ) {
        if ( $args['subject'] == $my_notifiction_subject ) {
            $my_change_from = true;
        }
    }
    return $args;
}

/**
 * If the wp_mail filter set the $my_change_from global
 * to true, then the email being sent is the notification
 * email, so we'll use this filter to change the "from"
 * address.
 */
add_filter( 'wp_mail_from', 'my_wp_mail_from' );
function my_wp_mail_from( $from_email ) {
    global $my_change_from;
    if ( $my_change_from ) {
        $from_email = "[email protected]";
    }
    return $from_email;
}

/**
 * Same as above but it changes the "from name" to go
 * with the address.
 */
add_filter( 'wp_mail_from_name', 'my_wp_mail_from_name' );
function my_wp_mail_from_name( $from_name ) {
    global $my_change_from;
    if ( $my_change_from ) {
        $from_name = "No Reply";
    }
    return $from_name;
}

Erklärung des obigen (obwohl es auch mit jedem Filter kommentiert ist):

  1. Verwenden Sie den Filter wp_new_user_notification_email, um ein globales Element (damit wir es in einer anderen Funktion aufnehmen können) mit dem Wert der Betreffzeile der Benachrichtigungs-E-Mail festzulegen. Beachten Sie, dass dies die Standardbenachrichtigung für WP neue Benutzer voraussetzt. Wenn ein anderer Prozess verwendet wird oder die Standardeinstellung geändert wird, muss dies geändert werden, um dies zu berücksichtigen.
  2. Verwenden Sie den Filter wp_mail ("filter" - nicht zu verwechseln mit der Funktion wp_mail()), um die Betreffzeile mit der globalen Variablen zu vergleichen, die wir im Filter wp_new_user_notification_email festgelegt haben. Hier erfahren Sie, ob es sich bei der gesendeten E-Mail um die Benachrichtigung des neuen Benutzers handelt. Wenn dies der Fall ist, verwenden Sie eine globale Variable, um einen Booleschen Wert (true | false) umzuschalten, um festzustellen, ob die Absender-E-Mail geändert werden muss.
  3. Verwenden Sie die Filter wp_mail_from und wp_mail_from_name, um den $my_change_from (den in Nummer 2 genannten globalen Booleschen Wert) zu überprüfen und festzustellen, ob die Adresse und der Name geändert werden sollen.

Es gibt einige andere Möglichkeiten, um dasselbe Konzept zu verwirklichen - dies ist nur ein möglicher Ansatz.

Wenn Sie am Ende SMTP verwenden, ist dies eine andere Geschichte, da dies nicht funktioniert. In diesem Fall benötigen Sie eine tatsächliche Adresse für beide und müssen Ihre Verbindung basierend auf diesen Informationen herstellen, wenn Sie mit phpmailer_init umgehen.

1
butlerblog