2010-09-04 18 views
35

Estoy tratando de crear un script php que maneje una lista de correo para mí usando una base de datos mySQL, y tengo la mayor parte en su lugar. Lamentablemente, parece que no puedo hacer que los encabezados funcionen correctamente, y no estoy seguro de cuál es el problema.¿Cuál es el formato de los encabezados de correo electrónico que muestran un nombre en lugar del correo electrónico?

$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"; 

El resultado me estoy poniendo en el extremo recieving es:

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

Respuesta

88

tener nombres, en contraposición a las direcciones de correo electrónico que se muestran, utilice la siguiente:

"John Smith" <[email protected]> 

fácil.

En cuanto a los saltos de línea rotos, que se debe a que está adjuntando el texto apóstrofos en lugar de comillas:

$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); 
+7

El nombre de visualización debe citarse cuando contiene un carácter de espacio en blanco. – Gumbo

+2

@Gumbo: Acabo de probar eso. Funcionó sin comillas No estoy seguro de si ese es el estándar, o simplemente una estructura muy flexible/indulgente ... –

+0

Supongo que esto último; ver [RFC 822] (http://tools.ietf.org/html/rfc822#section-6.1). – Gumbo

-2
$to = '[email protected]'; 
    $to .=', ' . $_POST['Femail']; 
    $subject = 'Contact Us Form'; 

// message 
$message ="<html> 
<head> 
<title>Email title</title> 
</head> 
<body> 
<h3>important message follows</h3> 
<div> 
    you are being brought this email to be safe. 
</div> 
</body> 
</html>"; 


    // To send HTML mail, the Content-type header must be set 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    // Additional headers 
    $headers .= 'To: SendersEmailName <[email protected]>' . "\r\n"; 
    $headers .= 'From: YourName <[email protected]>' . "\r\n"; 
    $headers.='X-Mailer: PHP/' . phpversion()."\r\n"; 
    $headers.= "BCC: $emailList"; 


    mail($to, $subject, $message, $headers); 
8

Dentro de un single quoted string, sólo las secuencias de escape \' y \\ se sustituyen por ' y \ respectivamente. Es necesario utilizar double quotes tener las secuencias de escape \r y \n ser reemplaza por los caracteres correspondientes:

$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"; 

También se puede utilizar una matriz para recoger los campos de cabecera y los puso adelante en conjunto:

$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); 
Cuestiones relacionadas