Foros del Web » Programando para Internet » PHP »

HTML mai() servidor local=OK / mail() sevidor = KO

Estas en el tema de HTML mai() servidor local=OK / mail() sevidor = KO en el foro de PHP en Foros del Web. Buenos dias, intento mandar un mail al cliente al realizar una compra en formato HTML. Código: //--------------------------------cuerpo correu client ob_start(); include($rutahtml."cataleg/facturar.php?orderid=$orderid"); $html=ob_get_contents(); ob_end_flush(); $cuerpoclient .= ...
  #1 (permalink)  
Antiguo 15/11/2008, 04:40
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
HTML mai() servidor local=OK / mail() sevidor = KO

Buenos dias,
intento mandar un mail al cliente al realizar una compra en formato HTML.
Código:
//--------------------------------cuerpo correu client

ob_start();
include($rutahtml."cataleg/facturar.php?orderid=$orderid");
$html=ob_get_contents();
ob_end_flush();

$cuerpoclient .=
".$html.";

//para el envío en formato HTML
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ". $ship_name . " <" . $email . ">\r\n"; //optional headerfields

    //Correu cliente
    mail($email,"La seva compra ",$cuerpoclient,$headers);
Este código funciona perfectamente en mi servidor local. Me llega por correo una fantástica pagina web.
En cambio cuando lo subo al servidor me llega todo el código de la web pero en formato texto.
Que puede estar pasando?

Gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 15/11/2008, 07:45
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: HTML mai() servidor local=OK / mail() sevidor = KO

No tengo ni idea de porque pero con este otro encabezado funciona en los dos servidores.


$headers ="MIME-Version: 1.0\n";
$headers .="From: ". $ship_name . "\n";
$headers .="X-Mailer: PHP/". phpversion()."\n";
$headers .="Content-Type: text/html; charset=\"ISO-8859-1\"\n";
  #3 (permalink)  
Antiguo 15/11/2008, 09:58
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: HTML mai() servidor local=OK / mail() sevidor = KO

Cita:
Iniciado por da2 Ver Mensaje
No tengo ni idea de porque pero con este otro encabezado funciona en los dos servidores.
¿Servidor local en Windows y servidor remoto con Linux, quizás?

Si no estoy equivocado, '\n' se traduce automáticamente en el salto de línea propio de cada plataforma (CR, CR+LF, ...). Pero tal como recomiendan en el manual, es preferible usar la constante PHP_EOL (introducida en PHP 5.0.2) para que se interpreten correctamente los saltos de línea de forma transparente, con independencia de la plataforma en la que se ejecute el script.

Si usas versiones anteriores y no tienes definida esta constante, puedes definirla tú mismo, de la siguiente manera:

Código PHP:
<?php
    
if (!defined('PHP_EOL')) define ('PHP_EOL'strtoupper(substr(PHP_OS,0,3) == 'WIN') ? "\r\n" "\n");
?>
Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:42.