2011-12-03 20 views
18

Estoy intentando enviar correo electrónico desde mi php:Cambiar el nombre del remitente de correo php en lugar de [email protected]

$to = '[email protected]'; 
    $email_from = "[email protected]"; 

    $full_name = 'Suraj Hazarika'; 
    $from_mail = $full_name.'<'.$email_from.'>'; 



    $subject = "testing sender name"; 
    $message = ""; 
    $message .= ' 
      <p><strong>This is only a test . Please do not reply.</strong><br /> 
    '; 
    $from = $from_mail; 

    $headers = "" . 
       "Reply-To:" . $from . "\r\n" . 
       "X-Mailer: PHP/" . phpversion(); 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";   
    mail($to,$subject,$message,$headers); 

estoy siguiendo el tutorial PHP E-mail Form Sender Name Instead Of E-mail? pero todavía estoy recibiendo los mensajes de correo electrónico con el nombre del remitente con nombre de host

 From        Date    Subject 
[email protected] Fri, 11:24 pm  testing sender name 
[email protected] Fri, 11:24 pm  testing sender name 
+0

Es posible que desee ver en los ataques de inyecciones de cabecera. Tu código no es directamente vulnerable, pero asegúrate de cuidarlo. – tangrs

Respuesta

20

sólo utiliza $from en su cabecera Reply-To. Si desea que esté en el encabezado From, debe configurarlo en el encabezado From.

poner algo como esto antes de su comando mail():

$headers .= 'From: ' . $from . "\r\n"; 
0

intenta agregar From: a la cabecera

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

Algunos MTA puede cambiar/ignore esta definición para evitar el Spam, y anular con el usuario de SMTP configurado en PHP.ini

15

Vine a esta pregunta buscando algo diferente pero con palabras similares, así que aquí está cómo hacer lo que estaba buscando:

En el encabezado from, ponga el complemento ress en corchetes angulares, y el "nombre del remitente" fuera de él.

from: Don Draper <[email protected]>\n 

Yo quería que la bandeja de entrada de decir Don Draper en lugar de don.draper y eso es cómo hacerlo.

4

También puede tratar de añadir la dirección From a 'sobre' del correo electrónico, utilizando el quinto parámetro en la función de PHP mail():

mail($to_mail, $subject, $message, $headers, "-f$from_email"); 

Referencia here.

de referencia con respecto a los encabezados de correo y sobres here

en cuenta que algunos instalaciones de servidor puede rechazar tal o lanzar una advertencia, dependiendo de su configuración y/o la configuración del agente de transferencia de correo. This answer habla sobre la actualización de los 'usuarios de confianza' de sendmail con respecto a esto.

+0

No está forzando nada, el encabezado 'From:' establece el remitente MIME, mientras que el parámetro adicional '-f' establece el remitente del sobre. Esto no está permitido en modo seguro. – LeonardChallis

+0

@LeonardChallis Muy bien; No entendí completamente la diferencia entre los encabezados y los sobres.He actualizado mi respuesta con una (mejor) mejor y más clara explicación y referencias. – indextwo

+0

Se ve bien :) gracias – LeonardChallis

0

añadir esta línea antes de la línea de cabecera

$headers .= "From: Your Name <[email protected]> \r\n"; 

Así que el código será

$headers = ""; 
$headers .= "From: WIFI Metropolis <[email protected]> \r\n"; 
$headers .= "Reply-To:" . $from . "\r\n" ."X-Mailer: PHP/" . phpversion(); 
$headers .= 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";   
mail($to,$subject,$message,$headers); 
Cuestiones relacionadas