What is the format for e-mail headers that display a name rather than the e-mail?
I'm trying to create a php script that will handle a mailing list for me using a mySQL database, and I have most of it in place. Unfortunately, I can't seem to get the headers to work right, and I'm not sure what the problem is.
$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";
The result I'm getting on the recieving end is:
"noreply"@rilburskryler.net rnReply-To: [email protected]: PHP/5.2.13rnMIME-Version: 1.0
Solution 1:
To have names, as opposed to email addresses shown, use the following:
"John Smith" <[email protected]>
Easy.
Regarding the broken line breaks, that is because you are enclosing the text in apostrophes rather than quotation marks:
$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 );
Solution 2:
Within a single quoted string, only the escape sequences \'
and \\
are replaced by '
and \
respectively. You need to use double quotes to have the escape sequences \r
and \n
to be replaces by the corresponding characters:
$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";
You could also use an array to collect the header fields and put them later together:
$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);