Foros del Web » Programando para Internet » PHP »

enviar mail con registros

Estas en el tema de enviar mail con registros en el foro de PHP en Foros del Web. Hola que tal, estoy buscando alguna orientacion respecto a lo que quiero hacer.. Quiero que cada dia se envie un mail a UNA direccion en ...
  #1 (permalink)  
Antiguo 23/04/2008, 13:57
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Pregunta enviar mail con registros

Hola que tal, estoy buscando alguna orientacion respecto a lo que quiero hacer..

Quiero que cada dia se envie un mail a UNA direccion en particular con los nuevos registros que han ingresado a la BD.

Por ejemplo, todos los dias a las 9 de la mañana, se envien los registros insertados en la base de datos durante el dia anterior.

¿se puede?, ¿hay algun programa para hacerlo?.

Si alguien sabe de algun codigo o de como empezarlo, solo necesito algo donde empezar porque no soy nada bueno en php
  #2 (permalink)  
Antiguo 23/04/2008, 14:14
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
Re: enviar mail con registros

se puede hacer de varias maneras, pero como estas en la seccion php lo vamos hacer en PHP y mysql.
primero
una tabla que tenga los datos basicos para el envio de un mail

Código:
CREATE TABLE `sendmail` (                                
            `id` int(4) NOT NULL auto_increment,                   
            `sto` varchar(200) default NULL,                       
            `sfrom` varchar(200) default NULL,                     
            `contactoNombre` varchar(200) default NULL,            
            `asunto` varchar(200) default NULL,                    
            `body` text,                                           
            `fecha_at` datetime default NULL,                      
            `fecha_in` datetime default NULL,                      
            `estado` int(1) default '1',                           
            PRIMARY KEY  (`id`)                                    
          ) ENGINE=MyISAM  CHARSET=latin1
ahora con la clase phpmailer
este codigo funciona bien solo copy y paste
Código PHP:
function SendMail($nombre$to$from$body$subject$id$username$password$smtp$port){
    
$mail                   =    new PHPMailer();
    
$mail->From             =    $from;
    
$mail->FromName         =    $nombre;
    
$mail->Mailer             =    'mail';
    
$mail->IsSMTP();
    
$mail->SMTPAuth         =    true;
    
$mail->Username         =    $username;
    
$mail->Password            =    $password;
    
$mail->Port                =    $port;     
    
$mail->Host                =    $smtp;
    
$mail->AddReplyTo("","");
    
$mail->AddAddress($to,""); 
    
$mail->WordWrap    50;    

    
$mail->IsHTML(true);    // Activamos el formato HTML
    
$mail->Subject            =    $subject;
    
    
//$mail->AddEmbeddedImage("../info/".$portada, "imagen", "imagen.jpg");    //Imagen embebida en el mensaje    
    //$imagen                    =    "<img src='cid:imagen' alt=''>";
    
    
$mail->Body                =    $$imagen.$body;
    
$mail->AltBody            =    "";
    if(
$mail->Send())
    {
        
$fechaFin            =    date("Y-m-d H:i:s");
        echo 
"$to      $username<br>";
        
$SQL                =    "update sendmail set estado='1', fechaFin = '$fecha_in' where id=$id ";
        return 
$SQL;
    }else{
        echo 
"Correo $to no enviado<br>";
    }
    
//sleep(10);  tiempo de espera para enviar otro mail


ahora para llamar esa funcion debes leer tu tabla y llamarla de esta manera
Código PHP:
include("phpmailer/class.phpmailer.php");
include(
"cn.php");
$port            =    25;
$nombre            =    "FiDeLio";
$link            =    Conectarse();
$sql            =    "select * from sendmail where estado=0";
$result         =    mysql_query($sql);
$username        =    "[email protected]";
$password        =    "top_secret";
$smtp            =    "smtp.dominio.com";

while(
$row      =    mysql_fetch_array($result)){
    
$SQL        =    SendMail($nombre$row["sto"], $row["sfrom"], $body$row["asunto"], $row["id"],  $username$password$smtp$port);
    
mysql_query($SQL,$link);
}
mysql_free_result($result);
mysql_close($link); 
y para terminar ejecutas tu pagina desde un cron, de esta manera.

Código:
* * */1 * * wget -q -O /dev/null  http://localhost/crontab/enviar_mail.php

obiamente todo el coddo q esta debe estar en una pagina llamada enviar_mail.php


suerte
__________________
~~[FiDeLio]~~
  #3 (permalink)  
Antiguo 23/04/2008, 14:18
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: enviar mail con registros

gracias, lo pruebo y te cuento!
  #4 (permalink)  
Antiguo 23/04/2008, 19:11
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: enviar mail con registros

no me resulto
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 08:37.