2010-05-25 23 views
5

tengo el siguiente códigocómo cambiar por defecto enviado por: Dirección de correo php()

$subject = "Subject Here"; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
// Additional headers  
$headers .= 'From: Domain Name <[email protected]>' . "\r\n";   
$to = $email; 
$body = ' 
My Message here 
'; 
mail($to, $subject, $body, $headers); 

y enviar correo correctamente, pero cuando veo los detalles en el correo electrónico en Gmail ... se nota

de nombres de dominio a [email protected]~~V~~3rd fecha de mar 25 de mayo de 2010 a las 24:41 sujetos mi tema aquí enviado por mars.myhostingcompany.net

mientras quiero mostrar mi propia dirección en una sección por correo para que sea mydomain.com en lugar de mars.myhostingcompany.net

Respuesta

4

Supongo que está en hosting compartido por lo que muestra la dirección de correo electrónico de su servidor es porque cuando configura PHP hay una configuración llamada "sendmail_from", que es una dirección predeterminada para enviar el correo en caso de que no se proporcione ninguna dirección en su código.

Parece que está especificando los encabezados adecuados en su código, así que solo puedo pensar en una posibilidad (que no puedo probar desde esta computadora). Intente eliminar el <> alrededor de su dirección de correo electrónico, puede estar tratando de leerlo como HTML y, por lo tanto, no tiene nada. Esto puede ocurrir en máquinas Windows porque PHP analiza los encabezados personalizados y no el MTA (agente de transferencia de mensajes) y PHP trata cualquier <> como HTML.

Me doy cuenta de que no se ve tan profesional (ya que el cliente de correo electrónico no mostrará el nombre cuando recibe el correo electrónico), pero si está ejecutando desde una máquina de Windows, puede hacer muy poco a menos que cambiar a un paquete de correo alternativo.

$subject = "Subject Here"; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
// Additional headers  
$headers .= 'From: [email protected]' . "\r\n";   
$to = $email; 
$body = ' 
My Message here 
'; 
mail($to, $subject, $body, $headers); 
+0

Esto no debe ser marcado como la respuesta correcta. Es completamente falso. Encontré esto a través de Google, así que sentí que necesitaba agregar este comentario, quiero decir, no te ofendas @Jarrod. He agregado una respuesta correcta. – LeonardChallis

+0

@LeonardChallis Deberías editar esta respuesta entonces. Las respuestas tardías casi nunca son aceptadas después. : / –

0

// formulario de una página:

<form method="POST" action="mailer.php"> 
    <p>Please feel free to contact me on the form below or my direct email address: [email protected]<br> 
     <br><br> 
     <br> 
     <br> 
     <br> 
    </p> 
    <table width="327" border="0"> 
     <tr> 
     <td width="102">Name:</td> 
     <td width="215"><input type="text" name="name" size="19"></td> 
     </tr> 
     <tr> 
     <td>Company: 
     <label for="company"></label></td> 
     <td><input type="text" name="company"></td> 
     </tr> 
     <tr> 
     <td>Email: </td> 
     <td><input type="text" name="email" size="19"></td> 
     </tr> 
     <tr> 
     <td>Telephone No: 
     <label for="telephone"></label></td> 
     <td><input type="text" name="telephone"></td> 
     </tr> 
    </table> 
    <p><br> 
     Enquiry:<br> 
     <textarea rows="9" name="message" cols="65"></textarea> 
     <br> 
     <br> 
     <input type="submit" value="Submit" name="submit"> 
    </p> 
</form> 

// PHP PÁGINA DE CORREO

<?php 
if(isset($_POST['submit'])) { 

//SEND TO 
// Send the completed form to the below email address: 
    $to = "[email protected]"; 

//SUBJECT 
// Subject of the email form: 
    $subject = "Jason Kench - Web Developer"; 

//NAME 
//POST the details entered into the name box 
    $name = $_POST['name']; 
//COMPANY NAME 
// 
    $company = $_POST['company']; 
//EMAIL 
// 

    $email = $_POST['email']; 
//TELEPHONE NUMBER 
// 
    $telephone = $_POST['telephone']; 
//MESSAGE/ENQUIRY 
    $message = $_POST['message']; 

//Headers from a online site may help not sure 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
//FROM EMAIL ADDRESS: 

// Additional headers to change the FROM EMAIL ADDRESS 
$headers .= 'From: [email protected]' . "\r\n";   



// BODY 
// This is the body of the message that will be sent to my email address with their details. 
    $body = " 
    You have received a message from the online contact form at http://www.jasonkench.co.uk\n 
    Details Below: \n \n 
    From: $name\n 
    Company: $company\n 
    $headers 
    Email Address: $email\n 
    Telephone No: $telephone\n 
    Message: $message\n"; 
// FORM SENT 
// This will alert the customer the form has been successfully sent. 
    echo "Your details have been sent, I will contact you within 48 hours."; 
// Use the mail function to email the following variables to my $to email address. 
    mail($to, $subject, $body, $headers); 

} else { 
    // Display error message if there is a problem. 
    echo "Sorry there seems to be a problem. Please email me direct at: $to thank you."; 
} 
?> 
4

Hay dos tipos de remitente (De), el emisor MIME cabecera y la envelope remitente.

Envia el remitente MIME con en los encabezados en el 4to parámetro de la función mail(). Estás haciendo esto bien.

El enveloper emisor (el que se puede enviar al enviar correo electrónico a través de sendmail o una envoltura compatible sendmail) con la bandera -f, se encuentra en el quinto parámetro mail(), additional_parameters, en el formato que pasa en el comando línea: [email protected].

lo tanto, su función de correo podría terminar pareciéndose a esto:

mail($to, $subject, $body, $headers, "[email protected]"); 
Cuestiones relacionadas