web-dev-qa-db-fra.com

wp_mail ne reconnaît pas les en-têtes cc et bcc

J'utilise WordPress 3.1.3

Je reçois des avis suivants lorsque j'utilise wp_mail avec les en-têtes cc et bcc.

Notice: Undefined variable: cc in /var/www/mysite.info/htdocs/wordpress/wp-includes/pluggable.php on line 349 
Notice: Undefined variable: bcc in /var/www/mysite.info/htdocs/wordpress/wp-includes/pluggable.php on line 352 

Voici comment je configure les en-têtes de courrier électronique

$email_headers  = "From: ".$from_field_value.PHP_EOL;
$email_headers .= "Reply-To: ".$from_field_value.PHP_EOL;
$email_headers .= "CC: [email protected]".PHP_EOL;
$email_headers .= "BCC: [email protected]".PHP_EOL;

if (wp_mail($email_to, $email_subject, $email_body, $email_headers)) {
      // Other process
}
1
I-M-JM

Si vous regardez la ligne sur laquelle l'avis est émis:

$cc = array_merge( (array) $cc, explode( ',', $content ) );

et

$bcc = array_merge( (array) $bcc, explode( ',', $content ) );

Ce qu’il essaie de faire est de fusionner un tableau vide qui n’a pas été défini avec un tableau créé par vos en-têtes.

La notification peut être ignorée. Après tout, c'est juste un avis.

Comme cette fonction est connectable, vous pouvez la copier et la placer dans un fichier plugin et corriger le code. De cette façon, vous ne modifiez pas les fichiers de base. Voir les fonctions enfichables:

http://codex.wordpress.org/Pluggable_Functions

Je voudrais modifier le code comme suit:

case 'cc':
    if (!isset($cc))
        $cc = array();
    $cc = array_merge( $cc, explode( ',', $content ) );
break;
case 'bcc':
    if (!isset($bcc))
        $bcc = array();
    $bcc = array_merge( $bcc, explode( ',', $content ) );
break;

Peut-être que cela devrait être signalé à l'équipe de développement de WordPress?

METTRE À JOUR:

Ci-dessus sera corrigé dans WP3.2 http://core.trac.wordpress.org/changeset/18006

1
Brady