Foros del Web » Programando para Internet » PHP »

Cuerpo del Mensaje con phpmailer

Estas en el tema de Cuerpo del Mensaje con phpmailer en el foro de PHP en Foros del Web. Hola a todos, los molesto nuevamente, quiero enviar mails sacando los correos de una BD, pero el detalle es que estoy tratando de mostrar un ...
  #1 (permalink)  
Antiguo 19/02/2012, 16:01
 
Fecha de Ingreso: febrero-2012
Mensajes: 61
Antigüedad: 12 años, 2 meses
Puntos: 1
Pregunta Cuerpo del Mensaje con phpmailer

Hola a todos, los molesto nuevamente, quiero enviar mails sacando los correos de una BD, pero el detalle es que estoy tratando de mostrar un contenido(nombres) en el cuerpo del mensaje mediante un while y cuando llegan los mensajes de la información que debería entregar el while. Este es parte de mi código, marque con mayúscula lo que quiero en el while:

Código:
$mail = new PHPMailer();
    $mail->IsSMTP(); // Envia el correo via SMTP
    $mail->SMTPAuth = true; // Enciende la autenticacion SMTP
    $mail->Username = $correo_emisor; // Usuario SMTP
    $mail->Password = $contrasena; // Contrasena SMTP    
    $mail->From = $correo_emisor;
    $mail->FromName = $nombre_emisor; //Nombre del que envia el correo
	
 	while($row = mysql_fetch_array($correos)){//Envia el correo a cada persona
	$mail->AddAddress($row["email"],$row["nombre"]);//Correo destino,Nombre destino.
    $mail->AddReplyTo($correo_emisor,$nombre_emisor);
    $mail->WordWrap = 50; // Word wrap
    $mail->IsHTML(true); // Enviar como HTML
    $mail->Subject = "Correo de aviso"; //Asunto
	//ACA EL CUERPO DEL HTML
    $body = "Hola <strong>".$row["nombre"]."</strong>,";
    $body.= "<p> este es el informe de hoy $fecha  <p>";
    while($row2 = mysql_fetch_array($query)){
    	if ($row2['cantidad']>= $row2['stock']) {
				//$body.=	" .$row2["nombres"]. ";
				 $body.= "Nombre <strong>".$row2["nombres"]."</strong>,"; //ESTO QUIERO MOSTRAR!!!!
				
				}
	}
	//===============================
    $mail->Body = $body; //Cuerpo en HMTL
    $mail->AltBody = ""; //Cuerpo en Texto plano
    if(!$mail->Send()){
      echo "Error: " . $mail->ErrorInfo;
    }else{
      echo "El Correo se ha enviado satisfactoriamente";
    }
	}

Espero sus sugerencias, muchas gracias.
  #2 (permalink)  
Antiguo 20/02/2012, 01:03
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Cuerpo del Mensaje con phpmailer

cuando llegan los mensajes de la información que debería entregar el while. quieres decir que no se ve la información?. Si es así, lo primero comprueba por qué no entras en el if:

Código PHP:
Ver original
  1. if ($row2['cantidad']>= $row2['stock']) {

a partir de aquí puedes continuar, saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 20/02/2012, 06:44
 
Fecha de Ingreso: febrero-2012
Mensajes: 61
Antigüedad: 12 años, 2 meses
Puntos: 1
Pregunta Respuesta: Cuerpo del Mensaje con phpmailer

Hola repara2, lo que quiero que hagan esos while es:


EL primero toma los correos de las personas a quienes enviar el mensaje y el segundo muestra el nombre de los productos y la cantidad, los cuales deben ir en el cuerpo del mensaje. Por ejemplo:

El primer while entra y toma el correo [email protected] y en el mensaje pone:

Nombre| Cantidad
lapiz | 10
Goma | 5

luego nuevamente entra y toma el correo [email protected]

y en el mensaje:

Nombre| Cantidad
lapiz | 10
Goma | 5

y al terminar envía los correos a [email protected] y [email protected].
El if es para discriminar sobre si la cantidad es baja o no.

Estoy haciendo pruebas con mysql_data_seek($query, 0);, que deberia funcionar con eso. Gracias.
  #4 (permalink)  
Antiguo 20/02/2012, 06:54
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Cuerpo del Mensaje con phpmailer

Entonces el problema son los while.
Hay una lista de emails, por cada email una lista de productos. Por tanto, tu email debe enviarse al finalizar el listado de productos para cada email, de lo contrario pierdes la información, el pseudo código sería

Código PHP:
Ver original
  1. $sql = "select * from correos";
  2.  
  3. //MIentras haya direcciones de correo
  4. while($correos)
  5. {
  6.      $sql2 = "select * from productos where correo = $correo";
  7.     //preparar y enviar el mail
  8.     $mail->Send();
  9.    //Fin de un correo, empezar con el siguiente
  10. }
Tal como lo haces ahora los resultados son imprevisibles porque sólo haces una select de correos y una de productos. A ver si sirve, saludos
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: cuerpo, html, mensaje, mysql, phpmailer, usuarios
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 21:32.