Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como enviar datos de una tabla por mail

Estas en el tema de Como enviar datos de una tabla por mail en el foro de PHP en Foros del Web. Hola a todos, soy nuevo en este foro y en php tambien, quisiera poder encontrar una solucion a este problema que tengo... El siguiente codigo ...
  #1 (permalink)  
Antiguo 18/03/2014, 12:29
 
Fecha de Ingreso: marzo-2014
Mensajes: 2
Antigüedad: 10 años, 1 mes
Puntos: 0
Como enviar datos de una tabla por mail

Hola a todos, soy nuevo en este foro y en php tambien, quisiera poder encontrar una solucion a este problema que tengo...

El siguiente codigo arma una tabla desde sql server con datos de cta cte de clientes, el fin de este codigo es que se envie por mail a cada cliente su listado de cta cte.

Si al codigo le saco todo lo que es envio de mail, y lo miro por pantalla, los datos salen todos ok.

Si le agrego el codigo para enviar al mail y armo el $body.="..." con $mail->Body=$body;... por mail no me llegan los datos de la consulta solo el encabezado de la tabla...

Dejo mi codigo para ver si alguien podria ayudarme...

Código:
<?php
require_once('C:\AppServ\www\envioMail\class.phpmailer.php');
try	{
		$link=mssql_connect("xxxxxx","test","test");
		mssql_select_db("xxxxxx",$link);
		$cod=1;
		for ($cod=3;$cod<=3;$cod++) {
			$resultado=mssql_query("SELECT cta_cte_clientes.codigo_cliente, clientes.nombre, clientes.correo_electronico, cta_cte_clientes.tipo_comp, cta_cte_clientes.nro_comp, cta_cte_clientes.fecha_emision, cta_cte_clientes.debe, cta_cte_clientes.haber, cta_cte_clientes.saldo FROM cta_cte_clientes INNER JOIN clientes ON cta_cte_clientes.codigo_cliente=clientes.codigo_cliente WHERE clientes.codigo_cliente='".$cod."' AND ((cta_cte_clientes.saldo)<>0) AND ((clientes.monto_credito)>0) ORDER BY cta_cte_clientes.codigo_cliente,cta_cte_clientes.fecha_emision;",$link);
			
			// Mail Datos
			$mail=new PHPMailer();
			$mail->Mailer="smtp";
			$mail->SMTPAuth=true;
			$mail->Host="xxxxxxx.com.ar";
			$mail->Port=25;
			$mail->Username="xxxxxxxx";
			$mail->Password="xxxxxxxx";
			$mail->From="xxxxxxxxxx";
			$mail->FromName="xxxxxxxxxx";
			$mail->Timeout=60;
			$mail->IsHTML(true);
			$mail->AddAddress('xxxxxxxxxxxxxxxx');
			$mail->Subject='Prueba de mails';
			
			// Armado Bucle CtaCte
			$body.="
			<html>
			<head>
			</head>
			<body>
			<table border='1'>
			<tr>
			<td>IdCliente</td><td>Nombre</td><td>Tipo</td><td>Nro.Comprobante</td><td>Fecha</td><td align='right'>Debe</td><td align='right'>Haber</td><td align='right'>Saldo</td>
			</tr>
			<?php if(!$resultado) {
			}
			else {
				while($row=mssql_fetch_row($resultado)) {?>
				<tr>
				<td><?php echo $row[0];?></td><td><?php echo $row[1];?></td><td><?php echo $row[3];?></td><td><?php echo $row[4];?></td><td><?php echo $row[5];?></td><td align='right'><?php echo $row[6];?></td><td align='right'><?php echo $row[7];?></td><td align='right'><?php echo $row[8];?></td>
				</tr>
				<?php
				$cliente=$row[1];
				}
			} ?>
			</table>
			</body>
			</html>
			";
			$mail->Body=$body;
			// Envio Mail
			$exito = $mail->Send();
			if(!$exito) { 
			echo "Problemas enviando correo electrónico";
			echo "<br>".$mail->ErrorInfo;
			echo " "; 
			}
			else { 
			echo "Mensaje enviado correctamente";
			echo " ";
			}
		}
	}
catch (Exception $e)
{
	echo "Caught Exception ('{$e->getMessage()}')\n{$e}\n";
}
mssql_close($link);
?>
Aclaro que el mail se envia OK, el problema es que en el cuerpo del mail me llega solo el ancabezado de la tabla y no los datos...

Lo mas raro es que por pantalla se ve bien.. asi que el error debe estar en como armo el cuerpo para enviar por mail...
  #2 (permalink)  
Antiguo 18/03/2014, 13:31
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: Como enviar datos de una tabla por mail

Te envía solo eso ? o los td vacios ? quizas sea un error de conexion o de sql

saludos
  #3 (permalink)  
Antiguo 18/03/2014, 14:32
 
Fecha de Ingreso: marzo-2014
Mensajes: 2
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Como enviar datos de una tabla por mail

Mira, lo pude solucionar despues de varios intentos... Me enviaba el encabezado y nada mas...

La solucion fue agregar esto...

Cita:
ob_start();
//Armado Bucle CtaCte
?>
<!-- codigo html -->
<?php

$mail->Body = ob_get_contents();

ob_end_clean();
Ahora envia todos los datos como debe ser...

Espero esto ayuda a otros que tengan el mismo problema...
  #4 (permalink)  
Antiguo 26/05/2014, 14:51
 
Fecha de Ingreso: mayo-2014
Ubicación: Mexico
Mensajes: 1
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Como enviar datos de una tabla por mail

Podrias ayudarme a saber como lo resolviste, el problema es que mi tabla es alimentada por un arreglo en PHP es decir el clasico

while ($row = mysql_fetch_array($qry){

//Creacion de la tabla

}

Pero si hago lo de

$message = "(no puedo meter ese codigo aqui) ";

No se si exista alguna forma, lo que quiero es que esa tabla se muestre en la pagina y tenga un enlace donde diga "Enviar por correo" y se vaya la tabla completa en el cuerpo del mail.

Gracias!

Etiquetas: mail, smtp, sql, tabla
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 17:43.