Foros del Web » Programando para Internet » PHP »

Repetición del cuerpo del mensaje al enviar mails en un bucle while

Estas en el tema de Repetición del cuerpo del mensaje al enviar mails en un bucle while en el foro de PHP en Foros del Web. Hola a todos, Gracias por vuestra atención. Estoy realizando un proyecto en el cual necesito crear una página de mantenimiento en la cual se verifique ...
  #1 (permalink)  
Antiguo 23/01/2007, 03:32
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Repetición del cuerpo del mensaje al enviar mails en un bucle while

Hola a todos,

Gracias por vuestra atención. Estoy realizando un proyecto en el cual necesito crear una página de mantenimiento en la cual se verifique una serie de datos mediante llamadas a una base de datos, y en función de las condiciones especificadas enviar un e-mail al usuario.

El código es el siguiente:

Código PHP:
//Texto común a todos los mails

    
$boundary "==MP_Bound_xyccr948x==";
    
$headers "MIME-Version: 1.0\r\n";
    
$headers .= "Content-type: text/plain; charset=ISO-8859-1;"
    
$headers .= "Content-Transfer-Encoding: 8bit\r\n" 
    
$headers .= "boundary = $boundary\"\r\n";
    
$headers .= "From: [email protected]\r\n";

$fecha_hoy date('Y-m-d');
$fecha_unix_hoy strtotime($fecha_hoy);

  
$sql3 "SELECT * FROM usuarios WHERE fechaInicio <> '0000-00-00' AND estado_usuario=1 AND fechaClave = '0000-00-00'";
        
        
$rs3 runQuery($sql3);
        
$filas_noclave mysql_num_rows($rs3);
        
        if (
$filas_noclave <> 0){
        
        
$asunto "Aviso XXX. Elección fecha clave.";
        
        while(
$row mysql_fetch_assoc($rs3)){

            echo 
$id $row['id'];
            echo 
$nombre $row['nombre'];
            
$apellidos $row['apellidos'];
            
$destinatario $row['email'];
            
$fecha_inicio $row['fechaInicio'];
            
$fecha_inicio_unix strtotime($fecha_inicio);
            
$fecha_inicio_elegir_fechaclave_uno_unix $fecha_inicio_unix + (24*3600);
            
$fecha_inicio_elegir_fechaclave_descarte_unix $fecha_inicio_unix +(2*24*3600);
            
    
//Comprobación si ha pasado un día desde el primer logueo    
        
        
if ($fecha_inicio_elegir_fechaclave_uno_unix == $fecha_unix_hoy){

        
$mensaje .= "Estimado/a ".$nombre." ".$apellidos.", \n";
        
$mensaje .= "Este correo es para avisarle que hoy mismo debe seleccionar su fecha clave, sino será descartado para poder realizarlo.";        
        
mail($destinatario,$asunto,$mensaje,$headers);
        
        } elseif (
$fecha_inicio_elegir_fechaclave_descarte_unix == $fecha_unix_hoy){

    
//Comprobación si han pasado dos días  y se descarta el usuario
        
        
        
$mensaje .= "Estimado/a ".$nombre." ".$apellidos.", \n";
        
$mensaje .= "Este correo es para comunicarle que todavía no ha elegido su fecha clave. Al haber superado el tiempo limite para poder elegir su fecha clave ha sido descartado para poder realizarlo.";        
        
mail($destinatario,$asunto,$mensaje,$headers);
        
    
//Actualización del estado del usuario en la base de datos
            
$sql "UPDATE usuarios SET estado_usuario = 5 WHERE id = '$id'";
            
$rs runQuery($sql);
        }

    }
    echo 
'<p>Emails enviados a usuarios que han sido aceptados, se han logueado pero no han elegido el d&iacute;a D: OK.</p>';
} else {
        echo 
Usuarios que han sido aceptadosse han logueado pero no han elegido el d&iacute;a DOK.</p>;


Los e-mails se envían, el primer usuario de la tabla lo recibe bien, pero a partir del segundo lo que recibe es lo siguiente:

Código HTML:
Estimado/a xxx xxx,
Este correo es para avisarle que hoy mismo debe seleccionar su fecha clave, sino será descartado para poder realizarlo.
Estimado/a xxx xxx,
Este correo es para avisarle que hoy mismo debe seleccionar su fecha clave, sino será descartado para poder realizarlo.
Es decir, el cuerpo del mensaje de mail va acumulando los textos que corresponden a los usuarios anteriores. ¿Alguna idea de por qué me sucede esto? Llevo varios días dándole vueltas pero nada, no hay forma.

Millones de gracias,
Kailea.
  #2 (permalink)  
Antiguo 23/01/2007, 03:40
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: Repetición del cuerpo del mensaje al enviar mails en un bucle while

despues del while pon un $mensaje = "";
de esta forma cada que sea nueva repeticion del bucle el mensaje empezara de 0.
__________________
Sin Ideas
  #3 (permalink)  
Antiguo 23/01/2007, 10:43
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: Repetición del cuerpo del mensaje al enviar mails en un bucle while

Mil millones de gracias, me estaba volviendo loca. ¡Ahora funciona!

Saludos,
Kailea.
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:36.