Pourquoi wp_mail () ne me laisse-t-il pas définir l'en-tête De: quand un ancien mail PHP () plaira-t-il?

32

Lorsque j'utilise wp_mail( $to, $subject, $message, $headers ) (avec les valeurs en place, bien sûr), l'e-mail est envoyé avec un nom d'origine et un e-mail qui n'est défini nulle part (et même dans les paramètres PHP ou Apache). Cependant, utiliser mail( $to, $subject, $message, $headers ) fonctionne plutôt bien. Que pourrait-il se passer avec wp_mail() pour causer cela?

    
posée helenhousandi 10.02.2011 - 21:45

5 réponses

43

Bonjour @helenyhou:

Vous pouvez définir l'en-tête, mais pas avec un paramètre. WordPress utilise "crochets" et les hooks dont vous avez besoin sont 'wp_mail_from' et 'wp_mail_from_name' hooks.

Voici les crochets que vous pouvez ajouter au fichier functions.php de votre thème pour modifier l'en-tête "From:" lors de l'utilisation de wp_mail() avec l'adresse de messagerie Helen Hou-Sandi <[email protected]> :

add_filter('wp_mail_from','yoursite_wp_mail_from');
function yoursite_wp_mail_from($content_type) {
  return '[email protected]';
}
add_filter('wp_mail_from_name','yoursite_wp_mail_from_name');
function yoursite_wp_mail_from_name($name) {
  return 'Helen Hou-Sandi';
}
    
réponse donnée MikeSchinkel 10.02.2011 - 21:56
4

Eh bien, si vous utilisez le format From: "Your Name" <[email protected]>\r\n dans vos en-têtes, vous ne devriez pas avoir de problème (sauf si un plug-in est installé qui remplace la fonction wp_mail).

Cependant, comme l'a dit Mike, vous pouvez filtrer les valeurs ultimes avec ces filtres ou simplement installer ce plugin:

Envoyer de

Il vous donnera un paramètre d’options pour déterminer le nom et l’adresse électronique à utiliser dans wp_mail.

    
réponse donnée John P Bloch 10.02.2011 - 21:59
1

Désolé de faire revivre une vieille question, mais n'est-il pas préférable de définir les en-têtes comme suit:

$subject  = "MyPlugin: Alert (".get_bloginfo('wpurl').")";
$headers  = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=".get_bloginfo('charset')."" . "\r\n";
$headers .= "From: MyPlugin <".$this->settings['from_address'].">" . "\r\n";
wp_mail($this->settings['notify_address'], $subject, $alertMessage, $headers);

De cette façon, vous n’aurez plus à vous soucier de l’utilisation d’un filtre puis de la suppression après wp_mail ().

    
réponse donnée Brady 15.04.2011 - 17:29
1

C'est un peu un hack, mais vous pouvez également utiliser la balise d'en-tête Reply To :

$headers = 'Reply-To: "Aaren A. Aarenson" <[email protected]>';

Malheureusement, cela ajoute l'adresse de messagerie à la liste De. Par conséquent, si vous répondez, vous devrez supprimer manuellement l'adresse configurée dans le filtre wp_mail_from .

    
réponse donnée Sjors Hijgenaar 14.09.2015 - 21:01
0

J'ai eu le même problème. Pour moi, il est apparu que le fournisseur d'hébergement (BlueHost) empêchait de changer de champ. Ils expliquent ici enlace .

J'ai résolu le problème en ajoutant l'e-mail aux boîtes aux lettres cPanel, comme ils le disent.

    
réponse donnée Tigran 14.08.2015 - 15:33

Lire d'autres questions sur les étiquettes