web-dev-qa-db-fra.com

Comment changer l'adresse email utilisée pour les inscriptions?

J'aimerais avoir une adresse électronique différente de celle utilisée par l'administrateur du site Web pour envoyer des courriels d'enregistrement et des notifications par courriel. Disons par exemple que j'ai installé WP en utilisant [email protected] mais j'ai besoin de tous les courriels d'enregistrement et de notification envoyés à partir de [email protected]

On m'a dit que je pouvais changer l'adresse électronique de mon compte à partir du WP tableau de bord Paramètres> Général , mais j'ai activé l'option multisite, je suppose que cette option se trouve maintenant dans Paramètres réseau> Administrateur réseau. Email , cependant, je ne pouvais pas trouver un moyen de définir une adresse email différente juste pour les inscriptions et les notifications dans les options qui apparaissent dans les paramètres.

En outre, il m'a été signalé que, grâce à SMTP, je pouvais gérer différentes adresses de messagerie avec Gmail, mais que mon serveur se trouvait derrière Cloudflare, et que j'avais installé le plug-in SendGrid en mode API, car il utilisait l'adresse IP de mon vrai serveur. serait envoyé dans l'en-tête du courrier électronique à l'aide de SMTP.

1
rraallvv

Étant donné que vous affichez SMTP, je vous dirai que vous devrez probablement prendre cette décision avant vous décidez comment vous allez gérer vos adresses "de" devrait gérer l'adresse "de".

L'approche "simple" consiste simplement à filtrer l'adresse "de" - c'est-à-dire si vous n'utilisez pas le protocole SMTP pour l'envoi.

Voici à quoi ça ressemble:

/**
 * 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;
}

Explication de ce qui précède (bien qu’il soit également commenté avec chaque filtre):

  1. Utilisez le filtre wp_new_user_notification_email pour définir une valeur globale (afin que nous puissions la saisir dans une autre fonction) avec la valeur de la ligne d'objet de l'e-mail de notification. Notez que cela suppose la notification par défaut WP nouvel utilisateur. Si un autre processus est utilisé ou si cette valeur par défaut est modifiée d'une manière ou d'une autre, vous devez le modifier pour y remédier.
  2. Utilisez le filtre wp_mail ("filter" - à ne pas confondre avec la fonction wp_mail()) pour comparer la ligne de sujet à la variable globale définie dans le filtre wp_new_user_notification_email. Cela vous dira si le courrier électronique envoyé est la notification de nouvel utilisateur. Si c'est le cas, utilisez une variable globale pour basculer un booléen (true | false) sur la nécessité de modifier le courrier électronique de.
  3. Utilisez les filtres wp_mail_from et wp_mail_from_name pour vérifier le $my_change_from (le booléen global mentionné au n ° 2) afin de déterminer s'il faut modifier l'adresse et le nom de l'expéditeur.

Il y aurait d'autres façons de faire ce même concept - ce n'est qu'une approche possible.

Si vous finissez par utiliser SMTP, c'est une autre histoire, car cela ne fonctionnerait pas. Dans ce cas, vous aurez besoin d'une adresse réelle pour les deux et vous devrez établir votre connexion en fonction de ces informations lors du traitement de phpmailer_init.

1
butlerblog