Foros del Web » Programando para Internet » PHP »

Como enviar mails en formato HTML desde un formulario

Estas en el tema de Como enviar mails en formato HTML desde un formulario en el foro de PHP en Foros del Web. Hola, cómo están? Tengo un formulario en HTML para enviar mails a una base de datos MySQL... El tema es que hice una caja de ...
  #1 (permalink)  
Antiguo 07/07/2008, 13:25
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 15 años, 11 meses
Puntos: 2
Exclamación Como enviar mails en formato HTML desde un formulario

Hola, cómo están? Tengo un formulario en HTML para enviar mails a una base de datos MySQL... El tema es que hice una caja de texto, donde pongo en codigo HTML del mensaje, y cuando lo paso al archivo .php que envía, me modifica el código y el mensaje no llega de la manera correcta sino que se ven símbolos que yo no puse..

Ya me aseguré de poner en las cabeceras que el mensaje es en HTML.. y tambien probé poniendo el código del mensaje dentro del script, y lo envía perfectamente..

O sea, el problema está al pasar el código del mensaje por el formulario..

Si alguien sabe como ayudarme, se lo agradeceria muchisimo..

Muchas gracias..

Fakulicious!*
  #2 (permalink)  
Antiguo 07/07/2008, 14:14
 
Fecha de Ingreso: febrero-2007
Ubicación: Santiago, Chile
Mensajes: 53
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Como enviar mails en formato HTML desde un formulario

podrías agregar al mensaje addslashes(); para probar, algo así:

$el_mensaje=addslashes($el_mensaje);

De esta forma "escapas" de los problemas que te pueda estar dando el uso de comillas dentro del html
__________________
neonomade.com
  #3 (permalink)  
Antiguo 07/07/2008, 15:26
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 15 años, 11 meses
Puntos: 2
Exclamación Respuesta: Como enviar mails en formato HTML desde un formulario

Tampoco funcionó así.. me agregó más símbolos raros.. me pone barras invertidas..

Yo lo tengo de la siguiente manera:

supongamos que quiero que diga "Buenas tardes Carlos" en el HTML escribo:

Código HTML:
<p>Buenas tardes <b>'.$row[0].'</b></p> 
ya que el nombre lo lee desde la BD..

y en el PHP tengo

Código PHP:
$mensaje $_POST['mensaje']; 
digamos que PHP lo interpreta así:

Código PHP:
$mensaje '<p>Buenas tardes <b>'.$row[0].'</b></p>'
y cuando llegaba el mail me lo mostraba así:

Buenas tardes, \'.$row [0].\'

me agrega barras invertidas, y me elimina las imágenes..

y ahora que le agregue addslashes(); me agrega dos barras invertidas más.. es decir, me muestra 3 barras invertidas:

Buenas tardes, \\\'.$row [0].\\\'


El problema está al pasar el código HTML por el formulario, porque si yo pongo el mismo código HTML en una variable dentro del script PHP, llega perfectamente.. Muestra los datos, no hay barras invertidas, y muestra las imágenes..

Y este problema no lo da solo en esta línea, sino que me lo da en todo el mensaje HTML..

Cómo puedo hacer para solucionarlo?

Última edición por fakulicious; 07/07/2008 a las 15:41
  #4 (permalink)  
Antiguo 07/07/2008, 20:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Como enviar mails en formato HTML desde un formulario

Hola fakulicious,

Usa stripslashes en lugar de addslashes para quitar las barras invertidas.

Saludos.
  #5 (permalink)  
Antiguo 08/07/2008, 15:02
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 15 años, 11 meses
Puntos: 2
Exclamación Respuesta: Como enviar mails en formato HTML desde un formulario

Gracias.. funcionó perfectamente eso.. agregué stripslashes(); y me envía el mensaje HTML a la perfección..

El tema ahora es que no me toma las variables.. Me toma las variables como texto..

Me llega así:

Buenas tardes, '.$row[0].'

cuando debería mostrarme

Buenas tardes, Carlos

yo creo que el problema está porque si yo tendría el contenido de la variable directamente dentro des script se daría así:

Código PHP:
$mensaje '<p>Buenas tardes, <b>'.$row[0].'</b></p>'
pero al tenerla así:

Código PHP:
$mensaje $_POST['mensaje']; 
no puedo definirle que comience con ' y termine con '; entonces no me "suma" las variables, sino que interpreta que las ' son parte del texto..

Pongo todo el script para ver si alguien me dice como puedo solucionarlo..

Código PHP:
<html>
<head>
<style type="text/css">
<!--
.Estilo1 {
    font-family: Arial, Helvetica, sans-serif;
    font-weight: bold;
}
.Estilo2 {font-family: Arial, Helvetica, sans-serif}
.Estilo3 {
    font-family: Arial, Helvetica, sans-serif;
    color: #006600;
    font-weight: bold;
}
.Estilo4 {
    font-family: Arial, Helvetica, sans-serif;
    color: #FF0000;
    font-weight: bold;
}
-->
</style>
</head>
<body>

<?php

$from 
$_POST['desde'];
$tipo $_POST['tipo'];
$asunto $_POST['asunto'];

include (
"conectar.php");

$result mysql_query("SELECT nombre, apellido, email, telefono, domicilio FROM registros"$coneccion);


echo 
'<table width="550" border = "0" cellspacing="2">
    <tr>
        <td width="250" height="29" bgcolor="#CCCCCC"><span class="Estilo1">Nombre</span></td>
        <td width="200" bgcolor="#CCCCCC"><span class="Estilo1">E-Mail</span></td>
        <td width="100" bgcolor="#CCCCCC"><span class="Estilo1">Resultado</span></td>
    </tr>'
;

while (
$row mysql_fetch_row($result)){

    
$mensaje stripslashes($_POST['mensaje']);
    
$nombre $row[0];
    
$apellido $row[1];
    
$to $row[2];
    
    
$headers "$tipo\r\n";
    
$headers .= "From: $from\n";
    
$headers .= "To: $nombre $apellido <$to>";

    
$enviar mail($to$asunto$mensaje$headers);

    if (
$enviar == 1) {

    echo 
'<tr>
        <td><span class="Estilo2">'
.$row[0].'&nbsp;'.$row[1].'</span></td>
        <td><span class="Estilo2">'
.$row[2].'</span></td>
        <td><p class="Estilo3">Enviado</p></td>
    </tr>'
;
    } else {
    
    echo 
'<tr>
        <td><span class="Estilo2">'
.$row[0].'&nbsp;'.$row[1].'</span></td>
        <td><span class="Estilo2">'
.$row[2].'</span></td>
        <td><p class="Estilo4">No enviado</p></td>
    </tr>'
;
    }

}

echo 
"</table>";

?>

</body>

</html>

Muchas gracias!

fakulicious!*
  #6 (permalink)  
Antiguo 08/07/2008, 15:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Como enviar mails en formato HTML desde un formulario

Hola fakulicious,

Puedes usar eval() en la variable, ten en cuenta que esto es muy peligroso ya que podrían subir cadenas con comandos dañinos.

Saludos.
  #7 (permalink)  
Antiguo 08/07/2008, 16:32
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 15 años, 11 meses
Puntos: 2
Exclamación Respuesta: Como enviar mails en formato HTML desde un formulario

Puse eval(); y me dio el siguiente error:

Parse error: syntax error, unexpected $end
in /home/av000340/public_html/envio/enviar.php(45) : eval()'d code on line 25

La sintáxis quedó asi:

Código PHP:
eval($mensaje stripslashes($_POST['mensaje'])); 
y en la línea 25 solo tengo:

Código PHP:
<?php
La verdad, es la primera vez que uso eval(); y sinceramente no sé ni para qué sirve..

hay algún error en la sintaxis?

fakulicious!*

Última edición por fakulicious; 08/07/2008 a las 16:38
  #8 (permalink)  
Antiguo 09/07/2008, 09:08
Avatar de marcosw  
Fecha de Ingreso: febrero-2008
Mensajes: 75
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Como enviar mails en formato HTML desde un formulario

hola si deseas enviar un email con formato html usa el phpmailer es menos complicado.

Leete estos enlaces:
http://nideaderedes.urlansoft.com/2006/12/03/introduccion-a-phpmailer/
http://blog.unijimpe.net/introduccion-a-phpmailer/
http://www.programacion.com/php/articulo/phpmailer/
  #9 (permalink)  
Antiguo 10/07/2008, 22:03
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 15 años, 11 meses
Puntos: 2
Exclamación Respuesta: Como enviar mails en formato HTML desde un formulario

Si, lo pensé.. también instalé el PHP List... pero como es para el laburo, me piden algo de programación propia.. solo me falta resolver eso.. y el sistema queda listo..

Si alguien puede ayudarme.. se lo agradecería mucho..

Fakulicious!*
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:11.