Foros del Web » Programando para Internet » PHP »

Problema con newsletter

Estas en el tema de Problema con newsletter en el foro de PHP en Foros del Web. Hola [email protected] Verán, tengo un newsletter en PHP y el archivo para enviar los mails es el siguiente: Código: <?php if (isset ($enviar)) { include ...
  #1 (permalink)  
Antiguo 16/12/2004, 14:18
Avatar de Tasty  
Fecha de Ingreso: diciembre-2004
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Pregunta Problema con newsletter

Hola [email protected]

Verán, tengo un newsletter en PHP y el archivo para enviar los mails es el siguiente:

Código:
<?php
if (isset ($enviar)) {
include ("conexion.php");
$resp = mysql_query ("SELECT * FROM usuarios",$conexion);
while ($row = mysql_fetch_array ($resp)) {
$nombre = $row ["nombre"];
$mail = $row ["mail"];
$mensaje = $_POST ["mensaje"];
$men = "Hola ".$nombre.". \n ".$mensaje."";
mail ($mail,"Newsletter!",$men,"FROM: [email protected]");
}
}
else {
?>
<form action="<?php $PHP_SELF ?>" method="post">
Introduce el mensaje:<br><br>
<textarea name="mensaje"></textarea>
<br><br>
<input type="submit" name="enviar" value="Enviar Newsletter">
</form>
<?php
}
?>
Y se que para enviar un mail en php con html sería algo así:

Código:
<?php
$destinatario = "[email protected]"; // Quien recibirá los corroes
$asunto = "Enviando correo html"; // tema del correo

// Este es el Cuerpo, el contexto del mensaje, la esencia del correo, el todo :)
$cuerpo = '
<h1>Hola.</h1>
<p>
<b>Hola esto va en negrita</b>. <i>esto en cursiva</i><u> y esto subrayado</u>
</p>

';

/* estas dos lineas que te siguen
son las que te permiten, enviar correos
en formato html, sin que salga el codigo de
html */
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
// Este es para decir, de donde viene
$headers .= "From: nombre <[email protected]>\r\n";

// aqui entra el trabajo del mail()
mail($destinatario,$asunto,$cuerpo,$headers) ;
?>
Y lo que hace que el mail se interprete como html y no se vea el codigo es el contenido de los $headers.

Pero no logro mandar mail en html con el newsletter. Le integro los $headers al codigo del newsletters (antes del mail()), pero no se interpreta, supongo que porque el codigo html del mail lo escribo en el textbox.

Pero no sé como hacer para poner el codigo directo en el archivo en vez de en el textbox.

Si alguien pudiera ayudarme estaría muy agradecida.

Gracias de antemano, y disculpen mi ignorancia sobre el tema, pero soy nueva en esto.

Besos.
  #2 (permalink)  
Antiguo 16/12/2004, 14:22
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
podrias poner el código que estas usando para hacerlo? es decir, donde tratas de integrar los headers en el newsletter??

recuerda también que el solo hecho de poner los headers no implica que se vea correctamente si el usuario tiene desactivado el html en su cliente de correo.

un saludo
  #3 (permalink)  
Antiguo 17/12/2004, 23:46
Avatar de Tasty  
Fecha de Ingreso: diciembre-2004
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Primero que nada, gracias por responder.

Mira, no se mucho de PHP (mas bien nada), pero intento hacerlo así:
Código:
<?php
if (isset ($enviar)) {
include ("conexion.php");
$resp = mysql_query ("SELECT * FROM usuarios",$conexion);
while ($row = mysql_fetch_array ($resp)) {
$nombre = $row ["nombre"];
$mail = $row ["mail"];
$mensaje = $_POST ["mensaje"];
$men = "Hola ".$nombre.". \n ".$mensaje."";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
mail ($mail,"Newsletter!",$men,"FROM: [email protected],$headers");
}
}
else {
?>
<form action="<?php $PHP_SELF ?>" method="post">
Introduce el mensaje:<br><br>
<textarea name="mensaje"></textarea>
<br><br>
<input type="submit" name="enviar" value="Enviar Newsletter">
</form>
<?php
}
?>
Agregando los
Código:
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
antes del mail()

y agregando el $headers dentro del mail().

Al momento de ejecutarlo y escribir el codigo HTML que quiero que se envie atravéz del newsletter lo hago en el textbox que ya tenía integrado el newsletter, pero al mandarlo y revisar el mail (hotmail) se ve el puro codigo

Creo (solo creo :p) que talvez puede ser porque al enviar el codigo atravez del textbox se interpreta como texto plano. Pero no se como hacer para quitar el textbox y poner el codigo directo en el archivo del newsletter o de alguna otra forma que no sea atravéz del ya mensionado textbox.

¿puede ser eso? ¿alguna idea?

Igual, gracias de antemano por la molestia.

Besos.
  #4 (permalink)  
Antiguo 18/12/2004, 10:38
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
Sonrisa

El textbox no es culpable :p

El problema son tus argumentos.
http://mx2.php.net/manual/en/function.mail.php

Ese link te da varios ejemplos de como usar la función mail()
Tu la usas asi:
El 4to parámetro de la función son los encabezados (headers), "FROM:" es un encabezado realmente, y en tu código lo tienes separado. Los encabezados los estás poniendo en el lugar de "additional parameters", ese último argumento por lo general no se pone.

Debería ser algo asi:

Código PHP:
if ( isset ($enviar) ) {
    include (
"conexion.php");
    
$resp mysql_query ("SELECT * FROM usuarios",$conexion);
    while (
$row mysql_fetch_array ($resp)) {
    
$nombre $row ["nombre"];
    
$mail $row ["mail"];
    
$mensaje $_POST ["mensaje"];
    
$men "Hola ".$nombre.". \n ".$mensaje."";
    
$headers "FROM:[email protected]\r\n" 
    
$headers .= "MIME-Version: 1.0\r\n";
    
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    
mail($mail,"Newsletter!",$men,$headers);
} else {
   
despliegaForma();

si no te funciona prueba sustituyendo \r\n por solo \n

suerte y cuentanos si te funcionó :)
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 18:27.