Foros del Web » Programando para Internet » PHP »

enviar html en un correo de una mailinglist

Estas en el tema de enviar html en un correo de una mailinglist en el foro de PHP en Foros del Web. Hola!! Tengo una mailinglist hecha en flash que inscribe a los que se apuntan a través de un fichero php en una base de datos ...
  #1 (permalink)  
Antiguo 10/04/2003, 07:01
 
Fecha de Ingreso: abril-2003
Ubicación: madrid
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 1
enviar html en un correo de una mailinglist

Hola!!

Tengo una mailinglist hecha en flash que inscribe a los que se apuntan a través de un fichero php en una base de datos mysql.

Cuando quiero enviar un correo a todos los miembros de la mailinglist; si lo hago como texto plano (escribo en un html en solo dos campos: subject y message) a través de otro fichero php se hace ok, pero si quiero enviarles html, el cual pego directamente en el campo del mensaje que me funcionaba antes con texto plano y en el php que envía añado: content type en el objeto mail:

así queda:
mail("$email","$subject","$message","Content-type:text/html","From: [email protected]");)

no se envía bien del todo, me manda ok la información de tablas y colores de html, pero los enlaces a las imágenes no se ven porque les añade un coma y barra invertida al principio y final:

esto es lo que veo en el código fuente del correo recibido:
src='\"http://www.dominio.com/noticias/imagen1.gif\"'

Gracias de antemano y sabe alguien que ocurre??
  #2 (permalink)  
Antiguo 10/04/2003, 08:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te hace falta indicar las cabeceras HTTP para indicar en tu e-mail que parte es HTML para que así lo interpreten los clientes de correo ..

Revisa esta FAQ del foro PHP:
http://www.forosdelweb.com/showthrea...350#post254350

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 10/04/2003, 11:35
 
Fecha de Ingreso: abril-2003
Ubicación: madrid
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 1
algo no está bien

Hola! Gracias por responder, es la primera vez que escribo en este foro...

mira, he integrado el código que me has dado con el que tenía, y algo está mal, creo que no envía nada porque no me sale el mensaje de "información enviada"...

Te escribo el código que tengo completo:

<?
//Program that takes data from the page
//message.php and sends it
//Connect to database
mysql_connect("localhost","usuario","password");

//Select the database we want to use
mysql_select_db("nombredatabase");

//Get the contents of the column Email from
//mailinglist table and put in an array.
$sql = "SELECT * FROM tabla";
$result = mysql_query($sql);

//cuenta que envía
$sfrom="[email protected]"

//data from the message.php page
$subject = $_POST['subject'];
$message = $_POST['message'];

//las cabeceras HTTP para indicar en tu e-mail que parte es HTML para que así lo interpreten los clientes de correo ..
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";


//Send message loop
While ($row = mysql_fetch_array($result)) {
$email = $row['email'];

//Take notice that we've included $subject and $message below
mail("$email","$subject","$message","$sheader");

echo("¡Información enviada!<br>");
}


//Close the database connection
mysql_close();
?>
  #4 (permalink)  
Antiguo 10/04/2003, 12:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm ese mensaje ahí simpre diría "mensaje enviado" se se ejecuta mail() ...

Prueba:

Código PHP:
$emails_fallo=0// Inciar contador de fallos

//Send message loop
While ($row mysql_fetch_array($result)) {
$email $row['email'];

  echo 
$email;
  
//Take notice that we've included $subject and $message below
   
if (mail("$email","$subject","$message","$sheader")){
       echo 
" --> OK<br>";
    } else {
       
$emails_fallo++;
       echo 
" --> FALLÓ<br>";
    }

}

if (
$emails_fallo >0){
   echo 
"No se han podido enviar todos los e-mails<br>";
} else {
   echo 
"¡Información enviada!<br>";

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 10/04/2003 a las 12:08
  #5 (permalink)  
Antiguo 10/04/2003, 15:59
 
Fecha de Ingreso: abril-2003
Ubicación: madrid
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 1
algo sigue fallando

Hola!!

Muchísimas gracias por tu interés, lamento decirte que sigue fallando.

Antes, con el "código1" que te pongo a continuación si que enviaba a todos los miembros de las lista, aunque existía el problema de las imágenes, que no se veían porque les añadía esa coma y barra invertida a su dirección según se puede observar en los correos recibidos: src='\"http://www.dominio.com/noticias/imagen1.gif\"'

código1:

Código PHP:
<?
//Program that takes data from the page
//message.php and sends it 
//Connect to database
mysql_connect("localhost","usuario","password");

//Select the database we want to use
mysql_select_db("nombredatabase");

//Get the contents of the column Email from
//mailinglist table and put in an array.
$sql "SELECT * FROM mailinglist";
$result mysql_query($sql);

//data from the message.php page
$subject $_POST['subject'];
$message $_POST['message'];

//Send message loop
While ($row mysql_fetch_array($result)) {
$email $row['email'];

//Take notice that we've included $subject and $message below
mail("$email","$subject","$message","Content-type:text/html\n","From: [email][email protected][/email]");

echo(
"¡Información enviada!<br>");
}


//Close the database connection
mysql_close();
?>

pero con el código que te envié antes y con el que he puesto ahora "código2" se "queda pillado" y no envía nada, no hace ningún echo:


código2:

<?
//Program that takes data from the page
//message.php and sends it
//Connect to database
mysql_connect("megasqlservers.com","dbm.festivalde peniscola.com","trinity3");

//Select the database we want to use
mysql_select_db("peniscoladb_festivaldepeniscola_c om");

//Get the contents of the column Email from
//mailinglist table and put in an array.
$sql = "SELECT * FROM mailinglist";
$result = mysql_query($sql);

//cuenta que envía
$sfrom="[email protected]"

//data from the message.php page
$subject = $_POST['subject'];
$message = $_POST['message'];

//las cabeceras HTTP para indicar en tu e-mail que parte es HTML para que así lo interpreten los clientes de correo ..
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";


$emails_fallo=0; // Inciar contador de fallos

//Send message loop
While ($row = mysql_fetch_array($result)) {
$email = $row['email'];

echo $email;
//Take notice that we've included $subject and $message below
if (mail("$email","$subject","$message","$sheader")){
echo " --> OK<br>";
} else {
$emails_fallo++;
echo " --> FALLÓ<br>";
}

}

if ($emails_fallo >0){
echo "No se han podido enviar todos los e-mails<br>";
} else {
echo "¡Información enviada!<br>";
}


//Close the database connection
mysql_close();
?>



Por cierto, el código html lo meto en otro documento, que solo tiene un campo de texto (message), donde pego el código y un titulo (subject)


saludos........
  #6 (permalink)  
Antiguo 10/04/2003, 16:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Aquí falta un ; .. No sé si será error tuyo al "cut-and-paste" o está mal en la FAQ' en tal caso .. avisa.

$sfrom="[email protected]";

Por lo demas .. lo probé y funciona bien (incluido el HTML) ... El único problema es que mail() de PHP (por lo menos a mi con mi servidor SMTP) me sucede que si hay algun error en el envio de algun e-mail (ejemplo una dirección que no exista) .. la rutina que puse de IF's dice "OK .. mensaje enviado" cuando en realidad falló (lo vi en los log de mi servidor SMTP) ..

Osease .. lo que hace esa rutina es decir "mail()" funcionó (salío de PHP el e-mail) mas no hace ..

Un saludo,

Última edición por Cluster; 10/04/2003 a las 16:25
  #7 (permalink)  
Antiguo 13/04/2003, 18:49
 
Fecha de Ingreso: abril-2003
Ubicación: madrid
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 1
las fotos no se ven por lo que te escribo a continuación:

Hola Cluster!

He puesto el punto y coma que faltaba (gracias) y ahora si que me envía el html, pero sigue el problema con las fotos (no se ven). El resto del html lo interpreta bien y veo por ejemplo las tablas bien, sus colores etc. pero las fotos no.

En el hlml que recibo en mi correo (son unas news) veo en el código fuente que ha añadido una comilla y una barra invertida al principio de la línea del enlace y una comilla al final como te pongo a continuación, fijate por favor:

src='\"http://www.dominio.com/noticias/imagen1.gif\"'


he probado a poner estas dos líneas más en el código:
$message=htmlspecialchars($message);
$message=stripslashes($message);

pero tampoco se soluciona....


Nuevamente pido ayuda para solucionar este asunto.

Muchas gracias
  #8 (permalink)  
Antiguo 14/04/2003, 10:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Donde compones el mensaje? en un "<textarea>" de un formulario?

Pon textualmente el código que escribes en ese <textarea> y el resultado que tienes al llegar a tu scritp (en $message)

En teoría .. deberías escribir en tu textarea:

Código PHP:
<image src="http://www.dominio.com/noticias/imagen1.gif"
Y al llegar a tu script .. pasarle el (antes de usar mail() con esa variable, claro):
Código PHP:
$message=stripslashes($message); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 14/04/2003, 12:39
 
Fecha de Ingreso: abril-2003
Ubicación: madrid
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 1
por fin salió bien...

Hola Cluster!

Asunto solucionado, ya se ven las imágenes correctamente.

Le quité la línea:
Código PHP:
$message=htmlspecialchars($message); 
que supongo que servirá para otras cosas, ya que en este asunto hacía que se viera todo el código html como texto, que no se interpretara el html correctamente.

dejé pues sólo la línea:
Código PHP:
$message=stripslashes($message); 
y ya funcionó.

Por lo demás, si que compongo el mensaje en un textarea de un formulario donde pego tal cual el código html de la página que quiero enviar.

un saludo, gracias de nuevo y "hasta la próxima".
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 12:57.