Bienvenido a la sección de Preguntas y Respuestas, donde puedes plantear tus dudas e inquietudes técnicas y recibir respuestas de otros miembros de la comunidad. Si deseas consultar el foro anterior puedes hacerlo a través del enlace: Foro Anterior (Solo Lectura)

do - while mostrados como texto en mail y no como un bucle

0 positivos 1 negativo
1,922 vistas
Buenas,

Estoy configurando un archivo php que debe correr automáticamente y enviar una lista de registros a una tabla de direcciones de correo.

Estoy probando el email incial para que me envie la lista de registros a un puñado de emails, pero en el resultado final el mail me muestra tan solo el primer registro, al tope del registro (dentro de una tabla) muestra el "do {" y al final del registro (dentro de una tabla) me muestra el while -> "} while (Array = mysql_fetch_assoc(Resource id #3));"

Existe alguna forma de que el bucle del do-while lo tome como una instrucción y no como texto parte del mensaje?
cerrada con la nota: El problema que tuve fue que no estaba encerrando correctamente e interconectando los tags.
preguntado por luisdb (15 puntos) Oct 3, 2014 en Discusión General
cerrada por luisdb Dic 10, 2014

2 Respuestas

1 positivo 0 negativos
¡Buenas tardes Luis! Lo más seguro es que tengas algún tag sin cerrar ¿Puedes Mostrarnos el código completo? Saludos.
respondido por joseayram (159 puntos) Oct 6, 2014

Hola José, gracias por tomarte unos minutos en responder. Tal como comenté, la estructura del email me envía el correo y coloca el primer registro encontrado, pero no realiza el bucle del do/while. Estas lineas de instrucción lo muestra en el email como si fuera texto.

Aqui coloco el contenido genérico de prueba del correo (lo rojo es el ciclo del do/while que sale reflejado en el email):

$to = "xxxxxx@xxxxxx.com";
$from = "xxxxxx@xxxxxx.com";
$subject = "Asunto del correo";

$message = <<<EOF
    
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<center>
<div><img src="http://www.site.com/imagen.jpg" width="200" height="100" /></div>
<div style="font:Verdana, Geneva, sans-serif; font-size:48px; color:#84BA22; text-align:center">TITULO</div>
<div style="font:Verdana, Geneva, sans-serif; font-size:16px"><span style="color:#ED7C10">Recordatorio:</span>Nota del recordatorio</div>
<div style="height:15px"></div>
<div style="background-color:#FFF; border:1px solid #5E9DC8; color:#111; text-align:center; text-align: justify; width: 700px; height: auto;">

<table width="695" border="0" cellspacing="5" cellpadding="0">
do {
<tr>
<td>&nbsp;</td>
<td style="color:#111; font:Verdana, Geneva, sans-serif; font-size:11px">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="10" style="color:#111; font:Verdana, Geneva, sans-serif; font-size:12px; font-weight:bold">&nbsp;</td>
<td width="285" style="color:#111; font:Verdana, Geneva, sans-serif; font-size:16px; font-weight:bold">{$row_Recordset1['nombre']}</td>
<td width="285" style="color:#111; font:Verdana, Geneva, sans-serif; font-size:14px; font-weight:bold">{$row_Recordset1['titulo']}</td>
</tr>
<tr>
<td>&nbsp;</td>
<td style="color:#111; font:Verdana, Geneva, sans-serif; font-size:12px">{$row_Recordset1['direccion']}</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td style="color:#111; font:Verdana, Geneva, sans-serif; font-size:12px">{$row_Recordset1['telefono']}</td>
<td><img src="http://www.site.com/imagen1.png" width="100" height="50" /></td>
</tr>
<tr>
<td colspan="3" style="border-bottom:1px solid #"></td>
</tr>
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
</table>
</body>
</html>

EOF;

//end of message
$headers  = "From: $from\r\n";
$headers .= "Content-type: text/html\r\n";

//options to send to cc+bcc
//$headers .= "Cc: [email]maa@p-i-s.cXom[/email]";
//$headers .= "Bcc: [email]email@maaking.cXom[/email]";
    
// now lets send the email.
mail($to, $subject, $message, $headers);

echo "Message has been sent....!";

puedes intentar esto:
http://php.net/manual/es/function.eval.php

pero ese codigo es muy erratico. mejor que uses un archivo para plantilla. sabes que es mvc?
te ayudaria un mundo leer un poquito sobre el tema.
 

1 positivo 0 negativos

estas intentando hacer el loop dentro del string, esto no es correcto. si hicieras algo como

https://gist.github.com/carlosbelisario/2b78e9a6c79594cac8f7

debería de funcionarte, los string aunque evalúan valores de variables hasta donde tengo entendido no ejecutan loops ni mucho menos, por lo que debes pensar primero en la lógica y como concatenar tu variable.

P.D: OFFTOPIC el Q&A me limito la cantidad de carácteres interesante 

respondido por carlos-belisario (178 puntos) Oct 6, 2014
...