Foros del Web » Programando para Internet » PHP »

Enviar newsletter usando plantillas

Estas en el tema de Enviar newsletter usando plantillas en el foro de PHP en Foros del Web. Hola a todos. Estoy intentando crear un sistema de envio de newsletter basado en plantillas html. Por un lado tengo un script que envía mediante ...
  #1 (permalink)  
Antiguo 08/10/2009, 12:26
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 1
Enviar newsletter usando plantillas

Hola a todos.

Estoy intentando crear un sistema de envio de newsletter basado en plantillas html.

Por un lado tengo un script que envía mediante PHPMailer un email, y por otro distintas plantillas que se eligirán dependiendo del tipo de newsletter que se quiera mandar.

El tema es que no sé cómo hacer para incluir la plantilla dentro del cuerpo del email.

He visto por ahi algunas soluciones, y he dado con una que no se si es la mas conveniente, pero fácil es un monton:

Código PHP:
//cargo el archivo
$archivo file_get_contents('Plantilla.html'); 
Hasta aquí el newsletter se manda genial. El problema es cuando quiero personalizar el newsletter con datos que vengan de una base de datos. Ahí ya directamente me pierdo, porque no sé como hacer para que la plantilla cargue los datos desde la base de datos y luego incluir todo junto en el cuerpo del email.

Usando file_get_contents no funciona (como era de esperar). He visto algunas otras soluciones, pero ninguna hace lo que quiero.

¿Alguna idea?
  #2 (permalink)  
Antiguo 08/10/2009, 13:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Enviar newsletter usando plantillas

No entendí bien, si deseas obtener informacion de la base de datos solo debes usar las funciones de mysql que tiene php, especificamente mysql_query
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 08/10/2009, 13:20
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: Enviar newsletter usando plantillas

Cita:
Iniciado por abimaelrc Ver Mensaje
No entendí bien, si deseas obtener informacion de la base de datos solo debes usar las funciones de mysql que tiene php, especificamente mysql_query
no, el problema de el es que tiene un template en html, que se carga perfecto y se envia correctamente, lo que quiere es incrustar en la plantilla datos obtenido de las consultas.

El problema aca no pasa por la funcion que te lea el contenido sino como este organizada tu aplicacion, lo mejor es utilizar un reconocimiento de variables "escapadas", generalmente se utilizan llaves, {DATO} y reemplazarla por $dato, pero requiere de una organizacion totalmente distinta a la que comunmente hacemos al incluir un dato, ya que se requiere analizar la plantilla, sustituir las variables y retornar template completado.

Por otro lado podes utilizar la opcion del include, y en el mismo incluir un archivo php que retorne un dato en mysql, es la solucion mas rapida que le puedes dar, pero para lo otro debes plantear las cosas desde otro onfoque
  #4 (permalink)  
Antiguo 08/10/2009, 15:27
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: Enviar newsletter usando plantillas

Cita:
Iniciado por samu22 Ver Mensaje
El problema aca no pasa por la funcion que te lea el contenido sino como este organizada tu aplicacion, lo mejor es utilizar un reconocimiento de variables "escapadas", generalmente se utilizan llaves, {DATO} y reemplazarla por $dato, pero requiere de una organizacion totalmente distinta a la que comunmente hacemos al incluir un dato, ya que se requiere analizar la plantilla, sustituir las variables y retornar template completado.
Supuse algo así cuando empezé a pensar sobre esto, ya que vi que algunas soluciones pasaban por detectar las variables escapadas y sustituirlas por sus valores correspondientes. El problema, tal como tu dices, es el funcionamiento de la aplicacion, ya que el programa que se encarga de enviar las newsletter simplemente recibe la plantilla y la manda, pero no se encarga de analizarla, ya que una plantilla puede llevar datos de los usuarios y otra los puede llevar de los productos, otra puede de llevar de los dos y otra de ninguno, y los mismos pueden ser datos de nombre, apellidos, precios, y un largo etcétera, con lo cual dicho programa no deberia entrar en ese tema (sería practicamente imposible, de hecho)

Lo que necesitaría seria que la plantilla cargase los datos correspondientes de la base de datos, y que se obtuviera posteriormente una cadena de texto que se pudiera añadir al cuerpo del email. Ahora, cómo, todavia no se me ha ocurrido, pero si me llegan cientos de newsletter personalizadas, debe ser porque se puede, ¿no?

Sobre lo del include, no lo he entendido.
  #5 (permalink)  
Antiguo 08/10/2009, 18:15
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: Enviar newsletter usando plantillas

podes crear la plantilla con fopen($dirTemplate,'+w') y sobre escribi la plantilla antes de enviarla con los datos tomados de la base de datos, osea cuando esta por enviar la newslestter escribis la plantilla con los datos de mysql y la escribis el archivo $html se lo asignas al body del mensaje, de esta forma la plantilla se crea de forma dinamica
  #6 (permalink)  
Antiguo 09/10/2009, 10:24
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: Enviar newsletter usando plantillas

Gracias por tu respuesta, samu22.

Rebuscando por el foro he dado con este hilo (de hace varios años, de hecho) en el que hacian una pregunta similar a la mia, y dieron como solucion lo siguiente:

Código PHP:
<?php
// incio captura buffer.
ob_start();
// llamas a tu script (un include() lo llama y lo ejecuta ..)
include("tu_script.php");
// almacenas el resultado de la salida hasta este punto del buffer sobre una variable
$mensaje=ob_get_contents();
// te deshaces del buffer de salida hasta este punto .. 
ob_end_clean();

// resto de tu classe PHP Mailer y uso de tus métodos ... en $mensaje tienes el HTML (salida) resultante de ejecutar tu_script.php
?>
Lo he probado y hace exactamente lo que necesito.

Muchas gracias de todos modos por vuestra ayuda
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 19:42.