web-dev-qa-db-fra.com

Quel est le format des en-têtes de courrier électronique qui affichent un nom plutôt que le courrier électronique?

J'essaie de créer un script php qui gérera une liste de diffusion pour moi en utilisant une base de données mySQL, et j'en ai la plupart en place. Malheureusement, je n'arrive pas à faire fonctionner correctement les en-têtes, et je ne sais pas quel est le problème.

$headers='From: [email protected] \r\n';
$headers.='Reply-To: [email protected]\r\n';
$headers.='X-Mailer: PHP/' . phpversion().'\r\n';
$headers.= 'MIME-Version: 1.0' . "\r\n";
$headers.= 'Content-type: text/html; charset=iso-8859-1 \r\n';
$headers.= "BCC: $emailList";

Le résultat que j'obtiens du côté de la réception est:

"noreply"@rilburskryler.net rnRPON-To: [email protected]: PHP/5.2.13rnMIME-Version: 1.0

48
RonLugge

Pour avoir des noms, par opposition aux adresses électroniques indiquées, utilisez ce qui suit:

"John Smith" <[email protected]>

Facile.

En ce qui concerne les sauts de ligne interrompus, c'est parce que vous placez le texte entre apostrophes plutôt qu'avec des guillemets:

$headers = array(
  'From: "The Sending Name" <[email protected]>' ,
  'Reply-To: "The Reply To Name" <[email protected]>' ,
  'X-Mailer: PHP/' . phpversion() ,
  'MIME-Version: 1.0' ,
  'Content-type: text/html; charset=iso-8859-1' ,
  'BCC: ' . $emailList
);
$headers = implode( "\r\n" , $headers );
110
Luke Stevenson

Dans une chaîne entre guillemets simples , seules les séquences d'échappement \' et \\ sont remplacés par ' et \ respectivement. Vous devez utiliser guillemets doubles pour avoir les séquences d'échappement \r et \n à remplacer par les caractères correspondants:

$headers = "From: [email protected] \r\n";
$headers.= "Reply-To: [email protected]\r\n";
$headers.= "X-Mailer: PHP/" . phpversion()."\r\n";
$headers.= "MIME-Version: 1.0" . "\r\n";
$headers.= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers.= "BCC: $emailList";

Vous pouvez également utiliser un tableau pour collecter les champs d'en-tête et les regrouper ultérieurement:

$headers = array(
    'From: [email protected]',
    'Reply-To: [email protected]',
    'X-Mailer: PHP/' . phpversion(),
    'MIME-Version: 1.0',
    'Content-type: text/html; charset=iso-8859-1',
    "BCC: $emailList"
);
$headers = implode("\r\n", $headers);
10
Gumbo