Foros del Web » Programando para Internet » PHP »

Dar formato a seccion HTML en phpmailer

Estas en el tema de Dar formato a seccion HTML en phpmailer en el foro de PHP en Foros del Web. Hola que tal, he estado probando la funcion PHPMailer y ya consigo que los datos que se ingresan en un formulario lleguen a mi correo. ...
  #1 (permalink)  
Antiguo 01/06/2012, 11:34
 
Fecha de Ingreso: mayo-2012
Ubicación: Distrito Federal
Mensajes: 49
Antigüedad: 7 años, 6 meses
Puntos: 9
Pregunta Dar formato a seccion HTML en phpmailer

Hola que tal, he estado probando la funcion PHPMailer y ya consigo que los datos que se ingresan en un formulario lleguen a mi correo.

La duda que tengo es como dar formato al correo que me llega ya que se ve muy simple, lo que quisiera hacer es ponerle un marco con una imagen en la parte de arriba y abajo los datos del usuario en otro tipo de fuente.

Les muestro el codigo que tengo:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cómo enviar un e-mail en PHP usando PHPMailer</title>
</head>
<body>
<?php
$enviarConsulta = ($_REQUEST["enviar"]=='enviar');
$consultaEnviada = false;
$error = '';
if($enviarConsulta){
    require("class.phpmailer.php");  
    $mail = new PHPMailer(); // por defecto utiliza la funcion PHP mail()    
    
    $emailTo = '[email protected]';
    $nombre = $_REQUEST['nombre'];
    $apellidos = $_REQUEST['apellidos'];
    $email=$_REQUEST['email'];
    $mensaje=$_REQUEST['mensaje'];
    $subject = 'Envío de correo electrónico mediante PHPMailer';                                               
    $body = "Se ha recibido una consulta.\n\nNombre: $nombre 
	                                      \n\nApellidos: $apellidos 
	                                       \n\nE-mail: $email
					        \n\nMensaje: $mensaje";   
    
    try{
        $mail = new PHPMailer();
        $mail->CharSet = 'UTF-8'; // soporte para ñ,á,é,Ã*...
        $mail->IsMail();                            
        $mail->AddAddress($emailTo);
        $mail->Subject = $subject;
        $mail->From = $email;
        $mail->FromName = $nombre . ' ' . $apellidos;
        $mail->Body = $body;                            
        $consultaEnviada = $mail->Send();        
        if(!$consultaEnviada){
          $error = $mail->ErrorInfo;
        }
    }catch (phpmailerException $e) {
        $error = $e->errorMessage();
    }                                
}
?>
<p>
<?php if(!$consultaEnviada) echo $error; else echo 'Consulta enviada, ¡muchas gracias!';
?>
</p>
<form method="post">
<p>
    <label for="nombre">Nombre</label>
    <input type="text" name="nombre" value=""/>
</p>
<p>
    <label for="apellidos">Apellidos</label>
    <input type="text" name="apellidos" value=""/>
</p>
<p>
    <label for="email">E-mail</label>
    <input type="text" name="email" value=""/>
</p>
<p>
    <label for="mensaje">Mensaje</label>
    <textarea name="mensaje"></textarea>
</p>
<p>
    <input type="submit" name="enviar" value="enviar"/>
</p>
</form>
</body>
</html>
Esta es la parte del codigo de arriba a la que le quisiera dar formato:

Código:
 $body = "Se ha recibido una consulta.\n\nNombre: $nombre 
	                                      \n\nApellidos: $apellidos 
	                                       \n\nE-mail: $email
					        \n\nMensaje: $mensaje";
De antemano gracias por la ayuda
  #2 (permalink)  
Antiguo 01/06/2012, 11:49
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 8 años
Puntos: 160
Respuesta: Dar formato a seccion HTML en phpmailer

escribi el html en el body y listo..
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 01/06/2012, 12:54
 
Fecha de Ingreso: mayo-2012
Ubicación: Distrito Federal
Mensajes: 49
Antigüedad: 7 años, 6 meses
Puntos: 9
Respuesta: Dar formato a seccion HTML en phpmailer

Perdon por la ignoracia pero la estructura seria asi?:

Código:
 $body = 

"
<html>
<head>
<title>Envio de Sugerencias</title>";
</head>

<body>

¿AQUI ADENTRO IRIA TODO EL FORMATO Y CONTENIDO TOMANDO LOS DATOS DEL FORMULARIO QUE LLENO EL USUARIO?

</body>
</html>

";
  #4 (permalink)  
Antiguo 01/06/2012, 13:17
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 8 años
Puntos: 160
Respuesta: Dar formato a seccion HTML en phpmailer

Si, guarda con las comillas dobles al final del </title> porque te corca la variable $body despues todo lo demas estaria bien.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 01/06/2012, 14:08
 
Fecha de Ingreso: mayo-2012
Ubicación: Distrito Federal
Mensajes: 49
Antigüedad: 7 años, 6 meses
Puntos: 9
Respuesta: Dar formato a seccion HTML en phpmailer

Gracias por tus prontas respuestas y disculpa las molestias, pero mira lo puse asi:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hotel Real</title>
</head>
<body>
<?php
$enviarConsulta = ($_REQUEST["enviar"]=='enviar');
$consultaEnviada = false;
$error = '';
if($enviarConsulta){
    require("class.phpmailer.php");  
    $mail = new PHPMailer(); // por defecto utiliza la función PHP mail()    
    
    $emailTo = '[email protected]';
    $nombre = $_REQUEST['nombre'];
    $apellidos = $_REQUEST['apellidos'];
    $email=$_REQUEST['email'];
    $mensaje=$_REQUEST['mensaje'];
    $subject = 'Envío De Sugerencias';                                               
    $body = "

<html>
<head>
<title>Envio de Sugerencias</title>
</head>

<body>
  <table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000">
    <tr>
      <td><table width="100%" border="0">
        <tr>
          <td style="text-align: center"><img src="imagenes/Real de Boca_JPG.jpg" width="284" height="166"></td>
        </tr>
        <tr>
          <td><p>&nbsp;</p>
            <p style="font-family: Helvetica LT Condensed; color: #008895; font-weight: bold; font-size: 22px; text-align: center;">SOLICITUD DE RESERVACIÓN</p></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><spanHelvetica LT Condensed"; font-size: 18px;"><span style="font-weight: bold">Nombre:</span>&nbsp; '.$_POST["nombre"].'</span> '.$_POST["ap_pat"].'&nbsp; <spanHelvetica LT Condensed"; font-size: 18px;">'.$_POST["ap_mat"].'&nbsp;</span></td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Ciudad:</span>&nbsp; '.$_POST["ciudad"].'</td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Teléfono:</span>&nbsp; '.$_POST["telefono"].'</td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Correo Electrónico:</span>&nbsp; '.$_POST["email"].'</td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Nombre de la empresa:</span>&nbsp; '.$_POST["empresa"].'</td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Número de personas:</span>&nbsp; '.$_POST["num_per"].'</td>
        </tr>
        <tr>
          <td><span style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Número de habitaciones:</span>&nbsp; '.$_POST["num_hab"].'</span></td>
        </tr>
        <tr>
          <td><span style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Número de noches:</span>&nbsp; '.$_POST["num_noches"].'</span></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><p style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Fecha de llegada:</span>&nbsp; <span style="text-align: justify">'.$_POST["dia_llegada"].'</span>&nbsp; &nbsp;<span style="text-align: justify">'.$_POST["mes_llegada"].'</span>&nbsp; &nbsp;<span style="text-align: justify">'.$_POST["año_llegada"].'</span></p></td>
        </tr>
        <tr>
          <td><p style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Hora de llegada:</span>&nbsp; <span style="text-align: justify">'.$_POST["hora_llegada"].'</span>&nbsp; &nbsp;<span style="text-align: justify">'.$_POST["am_pm_llegada"].'</span></p></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><span style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Fecha de sálida:</span>&nbsp; <span style="text-align: justify">'.$_POST["dia_salida"].'</span>&nbsp; &nbsp;<span style="text-align: justify">'.$_POST["mes_salida"].'</span>&nbsp; &nbsp;<span style="text-align: justify">'.$_POST["año_salida"].'</span></span></td>
        </tr>
        <tr>
          <td><span style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Hora de sálida:</span>&nbsp; <span style="text-align: justify">'.$_POST["hora_salida"].'</span>&nbsp; &nbsp;<span style="text-align: justify">'.$_POST["am_pm_salida"].'</span>&nbsp;</span></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><p>&nbsp;</p>
            <p><span style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Observaciones y comentarios:</span>&nbsp; '.$_POST["comentarios"].'</span></p></td>
        </tr>
        <tr>
          <td><p style="text-align: left; font-size: 14px; font-family: Helvetica LT Condensed;">&nbsp;</p>
            <p style="text-align: left; font-size: 14px; font-family: Helvetica LT Condensed;"><span style="font-weight: bold">Enviado el día:</span>&nbsp;&nbsp; '.$fecha.'</p></td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 14px;"><span style="font-weight: bold">Enviado desde la página:</span> &nbsp; '.$destinatario.'</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
      </table></td>
    </tr>
  </table>
</body>
</html>

            ";   
    
    try{
        $mail = new PHPMailer();
        $mail->CharSet = 'UTF-8'; // soporte para ñ,á,é,Ã*...
        $mail->IsMail();                            
        $mail->AddAddress($emailTo);
        $mail->Subject = $subject;
        $mail->From = HotelRealDeBoca;
        $mail->FromName = Hotel . ' ' . Real . ' ' . De . ' ' . Boca;
        $mail->Body = $body;                            
        $consultaEnviada = $mail->Send();        
        if(!$consultaEnviada){
          $error = $mail->ErrorInfo;
        }
    }catch (phpmailerException $e) {
        $error = $e->errorMessage();
    }                                
}
?>
<p>
<?php if(!$consultaEnviada) echo $error; else echo 'Consulta enviada, ¡muchas gracias!';
?>
</p>
<form method="post">
<p>
    <label for="nombre">Nombre</label>
    <input type="text" name="nombre" value=""/>
</p>
<p>
    <label for="apellidos">Apellidos</label>
    <input type="text" name="apellidos" value=""/>
</p>
<p>
    <label for="email">E-mail</label>
    <input type="text" name="email" value=""/>
</p>
<p>
    <label for="mensaje">Mensaje</label>
    <textarea name="mensaje"></textarea>
</p>
<p>
    <input type="submit" name="enviar" value="enviar"/>
</p>
</form>
</body>
</html>
Y a la hora de probarlo me marca error en la linea 30 que es esta

<table width="100%" border="1" cellpadding="0" cellspacing="0"

y es donde empieza la tabla no se si lo estoy haciendo mal
  #6 (permalink)  
Antiguo 01/06/2012, 14:13
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 8 años
Puntos: 160
Respuesta: Dar formato a seccion HTML en phpmailer

si, porque vos tenes problemas con las comillas dobles, te dije que ojo con eso, las unicas comillas dobles que debe existir en el codigo son las " que abren el body y las " que cierran. Todo lo que este dentro debe llevar comillas simples o escapearlas ( \" ) para que no haya conflicto y sepa cuando empieza la cadena $body y cuando termina, entonces para hacertelo facil, cambia todas las comillas dobles que encuentres dentro de $body por unas simples (o escapealas) y deja solo la que abre y cierra, ejemplo:

Código PHP:
Ver original
  1. $body = "Esto es una 'cadena' bien";
  2.  
  3. $body = "Esta es otra \"cadena\" bien";
  4.  
  5. $body = "Esto es una "cadena" mala";

Fijate que en el mismo resaltado de sintaxis te muestra que esta bien y que mal.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #7 (permalink)  
Antiguo 01/06/2012, 14:21
 
Fecha de Ingreso: mayo-2012
Ubicación: Distrito Federal
Mensajes: 49
Antigüedad: 7 años, 6 meses
Puntos: 9
Respuesta: Dar formato a seccion HTML en phpmailer

Aaaa ok, bueno entonces creo que tengo mucho trabajo que hacer jajaja, las cambiare y porbare de nuevo.

Espero que ahora si resulte y no me vuelva a equivocar para no causar mas molestias.

Muchisimas gracias por tu ayuda
  #8 (permalink)  
Antiguo 01/06/2012, 14:29
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 8 años
Puntos: 160
Respuesta: Dar formato a seccion HTML en phpmailer

Lo que necesites, para eso esta el foro
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #9 (permalink)  
Antiguo 01/06/2012, 15:13
 
Fecha de Ingreso: mayo-2012
Ubicación: Distrito Federal
Mensajes: 49
Antigüedad: 7 años, 6 meses
Puntos: 9
Respuesta: Dar formato a seccion HTML en phpmailer

Hola linuxzero ya probe el codigo y no me erroja ningun error.

El problema ahora es que cuando llega el mensaje a mi correo en vez de mostrar el formato que le di en HTML llega todo el codigo que viene despues de las comillas del body, asi me lo muestra, el puro codigo sin nada de formato:

<html>
<head>
<title>Envio de Sugerencias</title>
</head>

<body>
<table width='100%' border='1' cellpadding='0' cellspacing='0' bordercolor='#000000'>
<tr>
<td><table width='100%' border='0'>
<tr>
<td style='text-align: center'><img src='imagenes/Real de Boca_JPG.jpg' width='284' height='166'></td>
</tr>
<tr>
<td><p>&nbsp;</p>
<p style='font-family: Helvetica LT Condensed; color: #008895; font-weight: bold; font-size: 22px; text-align: center;'>ENVIO DE SUGERENCIAS</p></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td style='font-family: Helvetica LT Condensed; font-size: 18px;'><spanHelvetica LT Condensed'; font-size: 18px;'>
<span style='font-weight: bold'>Nombre:</span>&nbsp; MANUEL</span> RIOS JIMENEZ</td>
</tr>
<tr>
<td style='font-family: Helvetica LT Condensed; font-size: 18px;'><span style='font-weight: bold'>Ciudad:</span>&nbsp; DF</td>
</tr>
<tr>
<td style='font-family: Helvetica LT Condensed; font-size: 18px;'><span style='font-weight: bold'>Correo Electrónico:</span>&nbsp;[email protected]</td>
</tr>
<tr>
<td><p>&nbsp;</p>
<p style='font-family: Helvetica LT Condensed; font-size: 18px;'><span style='font-weight: bold'>Sugerencias:</span>&nbsp;PROBANDO MENSAJE</p></td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>


Este es el codigo completo:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hotel Real</title>
</head>
<body>
<?php
$enviarConsulta = ($_REQUEST["enviar"]=='enviar');
$consultaEnviada = false;
$error = '';
if($enviarConsulta){
    require("class.phpmailer.php");  
    $mail = new PHPMailer(); // por defecto utiliza la función PHP mail()    
    
    $emailTo = '[email protected]';
    $nombre = $_REQUEST['nombre'];
    $ap_pat = $_REQUEST['ap_pat'];
	$ap_mat = $_REQUEST['ap_mat'];
	$ciudad = $_REQUEST['ciudad'];
    $email=$_REQUEST['email'];
    $sugerencias=$_REQUEST['sugerencias'];
    $subject = 'Envío De Sugerencias';                                               
    $body = "

<html>
<head>
<title>Envio de Sugerencias</title>
</head>

<body>
  <table width='100%' border='1' cellpadding='0' cellspacing='0' bordercolor='#000000'>
    <tr>
      <td><table width='100%' border='0'>
        <tr>
          <td style='text-align: center'><img src='imagenes/Real de Boca_JPG.jpg' width='284' height='166'></td>
        </tr>
        <tr>
          <td><p>&nbsp;</p>
            <p style='font-family: Helvetica LT Condensed; color: #008895; font-weight: bold; font-size: 22px; text-align: center;'>ENVIO DE SUGERENCIAS</p></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td style='font-family: Helvetica LT Condensed; font-size: 18px;'><spanHelvetica LT Condensed'; font-size: 18px;'>
            <span style='font-weight: bold'>Nombre:</span>&nbsp; $nombre</span> $ap_pat $ap_mat</td>
        </tr>
        <tr>
          <td style='font-family: Helvetica LT Condensed; font-size: 18px;'><span style='font-weight: bold'>Ciudad:</span>&nbsp; $ciudad</td>
        </tr>
        <tr>
          <td style='font-family: Helvetica LT Condensed; font-size: 18px;'><span style='font-weight: bold'>Correo Electrónico:</span>&nbsp;$email</td>
        </tr>
        <tr>
          <td><p>&nbsp;</p>
            <p style='font-family: Helvetica LT Condensed; font-size: 18px;'><span style='font-weight: bold'>Sugerencias:</span>&nbsp;$sugerencias</p></td>
        </tr>
      </table></td>
    </tr>
  </table>
</body>
</html>

            ";   
    
    try{
        $mail = new PHPMailer();
        $mail->CharSet = 'UTF-8'; // soporte para ñ,á,é,Ã*...
        $mail->IsMail();                            
        $mail->AddAddress($emailTo);
        $mail->Subject = $subject;
        $mail->From = HotelRealDeBoca;
        $mail->FromName = Hotel . ' ' . Real . ' ' . De . ' ' . Boca;
        $mail->Body = $body;                            
        $consultaEnviada = $mail->Send();        
        if(!$consultaEnviada){
          $error = $mail->ErrorInfo;
        }
    }catch (phpmailerException $e) {
        $error = $e->errorMessage();
    }                                
}
?>
<p>
<?php if(!$consultaEnviada) echo $error; else echo 'Consulta enviada, ¡muchas gracias!';
?>
</p>
<form method="post">
<p>
    <label for="nombre">Nombre</label>
    <input type="text" name="nombre" value=""/>
</p>
<p>
    <label for="ap_pat">Apellido Paterno</label>
    <input type="text" name="ap_pat" value="" id="ap_pat"/>
</p>
<p>
  <label for="ap_mat">Apellido Materno</label>
  <input type="text" name="ap_mat" value="" id="ap_mat"/>
</p>
<p>
  <label for="ap_pat3">Ciudad</label>
  <input type="text" name="ciudad" value="" id="ap_pat3"/>
</p>
<p>
    <label for="email">E-mail</label>
    <input type="text" name="email" value=""/>
</p>
<p>
    <label for="sugerencias">Sugerencias</label>
    <textarea name="sugerencias" id="sugerencias"></textarea>
</p>
<p>
    <input type="submit" name="enviar" value="enviar"/>
</p>
</form>
</body>
</html>
  #10 (permalink)  
Antiguo 01/06/2012, 15:24
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 8 años
Puntos: 160
Respuesta: Dar formato a seccion HTML en phpmailer

Averigua como declararle el content-type para que interprete html

Esto: Content-type: text/html es lo que deberia tener la cabecera de tu mail, averigua como definirle eso al phpmailer()
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #11 (permalink)  
Antiguo 01/06/2012, 15:27
 
Fecha de Ingreso: mayo-2012
Ubicación: Distrito Federal
Mensajes: 49
Antigüedad: 7 años, 6 meses
Puntos: 9
Respuesta: Dar formato a seccion HTML en phpmailer

ok, haber que consigo gracias nuevamente
  #12 (permalink)  
Antiguo 01/06/2012, 15:32
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 8 años
Puntos: 160
Respuesta: Dar formato a seccion HTML en phpmailer

Por lo que lei tenes que agregarle este metodo al objeto para hacerlo HTML

Código PHP:
Ver original
  1. $mail->IsHTML(true);

Sino funciona googlea un toque mas
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #13 (permalink)  
Antiguo 03/06/2012, 13:10
 
Fecha de Ingreso: mayo-2012
Ubicación: Distrito Federal
Mensajes: 49
Antigüedad: 7 años, 6 meses
Puntos: 9
Respuesta: Dar formato a seccion HTML en phpmailer

Hola despues de buscar y buscar encontre un codigo que se asemeja a lo que quiero (hasta trae explicacion de cada linea) pero desafortunadamente me sigue marcando error en la linea

$body.=

que es donde pongo el hmtl. Como me habias dicho linuxzero faltaba poner el metodo $mail->IsHTML(true); pero este codigo ya lo lleva y de todos modos da error, ya no se que mas hacer he buscado y buscado y nada...


Aqui pongo el codigo que encontre:
Código:
<?php

// primero hay que incluir la clase phpmailer para poder instanciar un objeto de la misma
require "class.phpmailer.php";

//instanciamos un objeto de la clase phpmailer al que llamamos por ejemplo mail
$mail = new phpmailer();

//Indicamos cual es nuestra direccion de correo y el nombre que queremos que vea el usuario que lee nuestro correo
$mail->From = "[email protected]";
$mail->FromName = "Hotel Real";

//el valor por defecto del timeout es 10 pero vamos a usar 40. 
$mail->Timeout=40;

//Indicamos cual es la direccion de destino del correo
$mail->AddAddress("[email protected]");

//Indicamos en la cabecera si el correo contiene html, Esta linea es muy importante si nuestro correo va a contener html 
$mail->IsHTML(true);

//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo que se vea en negrita
$mail->Subject = "Envio de Sugerencias"; 

//$body.= es equivalente a $body=$body + algo nuevo
$body .= "Este es un ejemplo del cuerpo del correo en formato html."

//Aqui* es donde incluiremos el correo en html, es decir nuestra plantilla la cual se pondra entre comillas simples

$body.='

<style type="text/css">
<!--
.Estilo1 {
color: #0066CC;
font-weight: bold;
}
.Estilo2 {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #006699;
}
-->
</style>
</head>

<body>
<p>Cabecera informativa de nuestro correo electrónico </p>
<p>&nbsp;</p>
<table width="600" border="0" align="center" background="http://www.muchotrasto.com/images/fondoEmail.gif">
<tr>
<td>
<table width="594" border="0">
<tr>
<td width="254"><a href="http://www.muchotrasto.com/index.php"><img src="http://www.muchotrasto.com/images/Logo5.gif" width="250" height="250" border="0" /></a></td>
<td width="330"><div align="center" class="Estilo1">
<p>Sensor de seguridad: Ibutton + PIC </p>
<p><span class="Estilo2">Para m&aacute;s informaci&oacute;n vis&iacute;tanos en <a href="http://www.muchotrasto.com/index.htm">www.muchotrasto.com</a></span></p>
</div></td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>

';//Finaliza el codigo generado por Dreamweaver u otro editor, cerramos con comilla simple 


//Asignamos al atributo Body, la variable $body.
$mail->Body = $body; 

//Definimos AltBody por si el destinatario del correo no admite email con formato html, es decir recibira¡ dicha informacion si el servidor de correo al que enviamos el mensaje no puede admitir html
$mail->AltBody = "Mensaje expli*cito con la informacion mas relevante.";

//se envia el mensaje, si no ha habido problemas la variable $exito tendra el valor true y el correo se habra¡ enviado satisfactoriamente.
$exito = $mail->Send();

//Si el mensaje no ha podido ser enviado se realizaran 2 intentos mas como mucho para intentar enviar el mensaje, cada intento se hara 5 segundos despues del anterior, para ello se usa la funcion sleep
$intentos=1;
while ((!$exito) && ($intentos < 2)) {
sleep(5);
//echo $mail->ErrorInfo;
$exito = $mail->Send();
$intentos=$intentos+1;

}

if(!$exito)
{
echo "Problemas enviando correo electronico";
echo "<br>".$mail->ErrorInfo;
echo " ";
}
else
{
echo "Mensaje enviado correctamente";
echo " ";
}

?>
Alguien que sepa que es lo que hay que modificar?
  #14 (permalink)  
Antiguo 03/06/2012, 18:43
 
Fecha de Ingreso: mayo-2012
Ubicación: Distrito Federal
Mensajes: 49
Antigüedad: 7 años, 6 meses
Puntos: 9
Respuesta: Dar formato a seccion HTML en phpmailer

Ya resolvi el problema, y ahora los mensajes llegan con el formato que se le quiera dar. Dejo el codigo funcional para quien tenga el mismo problema sepa como solucionarlo.

Les comento que este codigo recoge los datos de un formulario aparte (sugerencias.php) por medio del metodo POST y solo se encarga del envio correcto, ademas le puse comentarios para que sepan que hace cada una de las lineas.

Y bueno sin mas, aqui el codigo:

sugerencias_send.php
Código:
<?php

// Primero hay que incluir la clase phpmailer para poder instanciar un objeto de la misma
require "class.phpmailer.php";

// Instanciamos un objeto de la clase phpmailer al que llamamos por ejemplo mail
$mail = new phpmailer();

// Señalamos los datos de envio que llevara nuestro correo
$mail->From = "[email protected]"; // Direccion de correo de quien envia el mensaje
$mail->FromName = "cualquier nombre"; // Nombre de quien envia el mensaje
$mail->Timeout=120; // El valor por defecto del timeout es 10 pero vamos a usar 120. 
$mail->AddAddress("[email protected]"); // Indicamos cual es la direccón de destino del correo, es decir, a donde se enviara

// Indicamos en la cabecera si el correo contiene html. Esta línea es muy importante si nuestro correo va a contener html
$mail->IsHTML(true);

// Asunto del mensaje
$mail->Subject = "Envio de Sugerencias"; 

// Aquí es donde incluiremos el correo el html, este html se puede editar con Dreamweaver o con cualiquier otro editor y despues pegarlo a continuacion de la comilla simple del metodo $cuerpo=
$cuerpo='

<html>
<head>
<title>Envio de Sugerencias</title>
<style type="text/css">
<!--
#datos {
	position:absolute;
	width:780px;
	left: 164px;
	top: 316px;
	text-align: center;
}
#apDiv1 #form1 table tr td {
	text-align: center;
	font-weight: bold;
}
#apDiv2 {
	position:absolute;
	width:49px;
	height:45px;
	z-index:2;
	left: 12px;
	top: 11px;
}
#apDiv1 #notificacion table tr td {
	text-align: center;
}
#apDiv1 #notificacion table tr td {
	text-align: left;
}
#apDiv1 #notificacion table tr td {
	text-align: center;
	font-family: Arial, Helvetica, sans-serif;
}
#apDiv3 {
	position:absolute;
	width:833px;
	height:115px;
	z-index:1;
	left: 99px;
	text-align: center;
	top: 16px;
}
-->
</style>
</head>

<body>
<div id="apDiv3">
  <table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000">
    <tr>
      <td><table width="100%" border="0">
        <tr>
          <td style="text-align: center"><img src="imagenes/Real.jpg" width="284" height="166"></td>
        </tr>
        <tr>
          <td><p>&nbsp;</p>
            <p style="font-family: Helvetica LT Condensed; color: #008895; font-weight: bold; font-size: 22px; text-align: center;">ENVIO DE SUGERENCIAS</p></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><spanHelvetica LT Condensed"; font-size: 18px;"><span style="font-weight: bold">Nombre:</span>&nbsp; '.$_POST["nombre"].'</span> '.$_POST["ap_pat"].'&nbsp; <spanHelvetica LT Condensed"; font-size: 18px;">'.$_POST["ap_mat"].'&nbsp;</span></td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Ciudad:</span>&nbsp; '.$_POST["ciudad"].'</td>
        </tr>
        <tr>
          <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Correo Electrónico:</span>&nbsp; '.$_POST["email"].'</td>
        </tr>
        <tr>
          <td><p>&nbsp;</p>
            <p><span style="font-family: Helvetica LT Condensed; font-size: 18px;"><span style="font-weight: bold">Sugerencias:</span>&nbsp; '.$_POST["sugerencias"].'</span></p></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
      </table></td>
    </tr>
  </table>
</div>
</body>
</html>

'; // Cerramos la comilla simple. Con la comilla simple y el punto y coma se finaliza el cuerpo del mensaje html.  


// Asignamos al atributo Body, la variable $cuerpo.
$mail->Body = $cuerpo; 

// Definimos AltBody por si el destinatario (quien recive) del correo no admite email con formato html, es decir recibirá este mensaje si el servidor de correo al que enviamos el mensaje no puede admitir html
$mail->AltBody = "Usted esta viendo este mensaje simple debido a que su servidor de correo no admite formato HTML.";

// Se envia el mensaje, si no ha habido problemas la variable $exito tendra el valor true (verdadero) y el correo se habrá enviado satisfactoriamente.
$exito = $mail->Send();

// Si el mensaje no ha podido ser enviado se realizaran 2 intentos mas como mucho para intentar enviar el mensaje, cada intento se hara 5 segundos despues del anterior, para ello se usa la funcion sleep
$intentos=1;
while ((!$exito) && ($intentos < 2)) {
sleep(5);
//echo $mail->ErrorInfo;
$exito = $mail->Send();
$intentos=$intentos+1;

}
// Esta condicional nos sirve para que en caso de que haya error al enviar el mensaje se muestre el mensaje "Problemas nviando correo electronico" y en caso satisfactorio nos muestre "Mensaj enviado correctamente"
if(!$exito)
{
echo "Problemas enviando correo electrónico";
echo "<br>".$mail->ErrorInfo;
echo " ";
}
else
{
// Este script nos redirige a una pagina web aparte en la cual se da un aviso de que el mensaje se envio correctamente
echo "<script language=Javascript> location.href=\"sugerencias_enviadas.php\"; </script>";
echo " ";
}

?>
Tambien les dejo el codigo del formulario, cuyos datos recoge el codigo antes mencionado, les aclaro que el codigo solo contiene el form donde se encuentran los campos y el cual tiene estas caracteristicas:

<form id="sugerencias" name="sugerencias" method="post" action="sugerencias_send.php" enctype="multipart/form-data">

Ustedes le pueden poner el diseño que quieran

Bueno aqui el codigo:

sugerencias.php
Código:
<form id="sugerencias" name="sugerencias" method="post" action="sugerencias_send.php" enctype="multipart/form-data">
              <table width="637" border="0">
                <tr>
                  <td width="216" style="font-size: 20px"><span style="color: #000; text-align: left;">Nombre</span>:</td>
                  <td width="359"><span id="sprytextfield1">
                    <label>
                      <input type="text" name="nombre" id="nombre" />
                    </label>
                    <span class="textfieldRequiredMsg">Escriba su nombre.</span></span></td>
                  <td width="48">&nbsp;</td>
                </tr>
                <tr>
                  <td style="font-size: 20px; color: #000; text-align: left;">Apellido Paterno:</td>
                  <td><span id="sprytextfield2">
                    <label>
                      <input type="text" name="ap_pat" id="ap_pat" />
                    </label>
                    <span class="textfieldRequiredMsg">Escriba su apellido paterno.</span></span></td>
                  <td>&nbsp;</td>
                </tr>
                <tr>
                  <td style="font-size: 20px; color: #000;">Apellido Materno:</td>
                  <td><span id="sprytextfield3">
                    <label>
                      <input type="text" name="ap_mat" id="ap_mat" />
                    </label>
                    <span class="textfieldRequiredMsg">Escriba su apellido materno.</span></span></td>
                  <td>&nbsp;</td>
                </tr>
                <tr>
                  <td style="font-size: 20px; color: #000;">Ciudad:</td>
                  <td><span id="sprytextfield4">
                    <label>
                      <input type="text" name="ciudad" id="ciudad" />
                    </label>
                    <span class="textfieldRequiredMsg">Escriba su ciudad.</span></span></td>
                  <td>&nbsp;</td>
                </tr>
                <tr>
                  <td style="font-size: 20px; color: #000;">Correo electrónico:</td>
                  <td><span id="sprytextfield5">
                  <label>
                    <input type="text" name="email" id="email" />
                  </label>
                  <span class="textfieldRequiredMsg">Escriba su e-mail.</span><span class="textfieldInvalidFormatMsg">Escriba su e-mail.</span></span></td>
                  <td>&nbsp;</td>
                </tr>
                <tr>
                  <td style="font-size: 20px; color: #000;">Sugerencias:</td>
                  <td><span id="sprytextarea1">
                    <label>
                      <textarea name="sugerencias" id="sugerencias" cols="45" rows="5"></textarea>
                    </label>
                    <span class="textareaRequiredMsg">Escriba sus sugerencias.</span></span></td>
                  <td>&nbsp;</td>
                </tr>
                <tr>
                  <td style="font-size: 20px">&nbsp;</td>
                  <td><label>
                    <input type="submit" name="enviar" id="enviar" value="Enviar sugerencias" />
                  </label></td>
                  <td>&nbsp;</td>
                </tr>
              </table>
            </form>
Y bueno sin mas espero que este ejemplo le sirva a alguien.

PDT: Gracias linuxzero por tu ayuda.
  #15 (permalink)  
Antiguo 04/06/2012, 08:17
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 8 años
Puntos: 160
Respuesta: Dar formato a seccion HTML en phpmailer

Excelente chuntaro18!, podrias explicar que fue lo que exactamente cambiaste para asi es mas facil para el que tiene el mismo problema encontrar la fuente mas que leerse todo el codigo que puede no necesitar o tener el mismo
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #16 (permalink)  
Antiguo 29/11/2013, 10:11
 
Fecha de Ingreso: noviembre-2012
Mensajes: 139
Antigüedad: 7 años
Puntos: 1
Respuesta: Dar formato a seccion HTML en phpmailer

la unica diferencia era que al body se le cambiaban las comillas dobles " "
por unas comillas simples ' ' y funciona
  #17 (permalink)  
Antiguo 29/11/2013, 10:14
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 8 años, 2 meses
Puntos: 396
Respuesta: Dar formato a seccion HTML en phpmailer

Cita:
Iniciado por falkon765 Ver Mensaje
la unica diferencia era que al body se le cambiaban las comillas dobles " "
por unas comillas simples ' ' y funciona
Notas que el tema tiene más de un año? por favor no revivas temas viejos y más aun si YA están resueltos. Lee las políticas del foro

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: formato, formulario, html, phpmailer, seccion, usuarios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:34.