Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/05/2008, 07:00
Avatar de milerweb
milerweb
 
Fecha de Ingreso: enero-2008
Ubicación: Lima peru
Mensajes: 81
Antigüedad: 16 años, 3 meses
Puntos: 1
mandar mail antes de la fecha

Hola amigos webmasters tengo un problema con mi script resulta que nesesito enviar un email de advertencia a todos los registros que les falta 15 dias para su fecha de expiracion (campo date_expire) he logrado restarle 15 dias a la fecha de expiracion pero tengo problemas al enviar el mail cuando pongo la condicion me manda el email a todos no solo a aquellos que cumplan con la condicion aqui les dejo el escript para que me ayuden o si tienen otro escript pasenmelo .

Código PHP:
<?php 
 $conex
=mysql_connect('localhost','user','clave') or die('No se puedo conectar con la base de datos!');

/*
Servidor: aquí debe poner la dirección de su servidor, en la mayoría de las compañías es 'localhost'
Nombre_de_usuario: debe pone su nombre de usuario en el servidor.
Contraseña: su contraseña.
*/

   
mysql_select_db('mibasededatos',$conex);

function 
suma_fechas($fecha,$ndias)
            

{
            

      if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha))
            

              list(
$año,$mes,$dia)=split("/"$fecha);
            

      if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("-",$fecha);
        
$nueva mktime(0,0,0$mes,$dia,$año) + $ndias 24 60 60;
        
$nuevafecha=date("Y-m-d",$nueva);
            

      return (
$nuevafecha);  
            

}
echo 
'<head>
            

              <title>'
.$_SERVER[PHP_SELF].'</title>
            

      </head>
            

      <html>
            

      <body>'
;


//aqui es donde quiero llamar a la fecha para después sumarle los Días

$date mysql_query ("SELECT dimeq_listings.mail,DATE_FORMAT(dimeq_listings.date_expire, '%d-%m-%Y') AS nfecha,dimeq_listings.selector,dimeq_listings.firmname FROM dimeq_listings where dimeq_listings.membership = 1"$conex) or die( mysql_error() );

 while(
$row2 mysql_fetch_array$date ))
{

$f11=suma_fechas($row2['nfecha'], 0); // aquí le sumo a la fecha 60 días
           
echo '</body>
            

      </html>'
;
 
// tu sabrás como la obtienes, solo asegurate que tenga este formato

$dias15// los días a restar

$fechaenvio date("Y-m-d"strtotime("$f11 -$dias day"));
$fechaactual=strftime"%Y-%m-%d "time() );

   
//elaboramos cadena de emails
echo "Fecha actual ".$fechaactual."<br>";
echo 
"Fecha de envio ".$fechaenvio."<br>";
}

     
$query_Tabla "SELECT dimeq_listings.mail,DATE_FORMAT(dimeq_listings.date, '%d-%m-%Y'),DATE_FORMAT(dimeq_listings.date_expire, '%d-%m-%Y') FROM dimeq_listings where dimeq_listings.membership = 1 ORDER BY userid ASC";
   
$Tabla mysql_query($query_Tabla$conex) or die(mysql_error());

/*
Email: es el nombre del campo que requerimos, si ha seguido nuestras instrucciones creando nuestra misma tabla en la base de datos no debe cambiar esto.
Usuarios: es el nombre de la tabla donde está el campo 'email', si ha seguido nuestras instrucciones creando nuestra misma tabla en base de datos no debe cambiar esto.
*/
 
if ( $fechaactual $fechaenvio) { 
   
//elaboramos cadena de emails
  
$losemails="";
  while (
$row_Tabla=mysql_fetch_assoc($Tabla)) {
   
$losemails.=($row_Tabla['mail'].", ");
   }

  
$largo=strlen($losemails);
   if (
$largo>2)
{
   
//quitamos ultimos ", "
   
$losemails=substr($losemails,0,$largo-2);
}
else
{
   echo 
"No hay destinatarios!";
   die();
};

// se definen los argumentos de mail( ):
$asunto='Prueba de email desde PHP';
$mensaje='<html>
<head>
   <title>Titulo de la Pagina</title>
</head>
<body>
   <p>Esta es una prueba de emails en formato HTML</p>
   Precios de nuestros productos:
   <table>
    <tr>
   <th>PRODUCTO<th>PRECIO<th>PROMOCION</th>
   </tr>
  <tr>
   <td>Refresco Grande</td><td>25,50</td><td>23,00</td>
  </tr>
  <tr>
    <td>Helado Napolitano</td><td>27,50</td><td>25,00</td>
  </tr>
  <tr>
   <td>Patatas</td><td>18,50</td><td>15,00</td>
  </tr>
  </table>
</body>
</html>'
;

/*
Aquí debe poner su email en formato HTML
*/

$envia='[email protected]';
$remite='[email protected]';

/*
Enviante: Nombre del enviante
Email_remitente: email que desea mostrar como remitente.
*/

/// Envío del email:

mail(null$asunto$mensaje"MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: $envia <$remite>
Bcc: $losemails" 
"\r\n") or die("Error al Enviar el Email");
echo 
"Mensaje Enviado con Éxito!"//

   
mysql_free_result($Tabla);
}
else
{
echo 
"no ay mensajes pra enviar a la fecha";
}
   
mysql_close($conex);
?>