Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2016, 16:12
Avatar de chulifo
chulifo
 
Fecha de Ingreso: abril-2009
Ubicación: perdido en codigos del PHP, pero aprendo rapido!
Mensajes: 524
Antigüedad: 15 años
Puntos: 18
Usando popen para enviar correo

Buen dia.

Se presenta el siguiente problema, tengo una serie de archivos donde envio correos usando PHPMailer, ahora bien existe una comunicacion entre cada archivo por medio de popen Sucede que en el ultimo archivo es donde se envia el email me devuelve el error Extension missing: openssl. Para que me puedan entender les dejo el codigo.


archivoqueiniciatodo.php
Código PHP:
Ver original
  1. function prepareMail($grupo,$sygo,$type){
  2.         global $Db;
  3.         $hash = $this->dohash();
  4.         if($Db->num_rows("Select * from ssl_emails where id_mail='{$hash}'",__FILE__,__LINE__) == 0){
  5.             $usuarios = $Db->query("Select * from ssl_usuarios where grupo = '{$grupo}'",__FILE__,__LINE__);
  6.             if($usuarios){     
  7.                 while($create_mails = $Db->fetch_array($usuarios,__FILE__,__LINE__)){
  8.                     $Db->query("INSERT INTO ssl_emails (id_mail, para, sygo, type, estado) VALUES ('{$hash}', '{$create_mails['correo']}', '{$sygo}', '{$type}', 'pendiente')",__FILE__,__LINE__);         
  9.                 }
  10.             }
  11.             pclose(popen('start /B C:\wamp\bin\php\php5.3.8\php.exe  C:\wamp\www\tarea.php -f "'.$hash.'"',"r"));
  12.         }else{
  13.             $this->prepareMail($grupo,$sygo,$type);
  14.         }
  15.     }
  16. prepareMail($grupo,$sygo,$type);

tarea.php
Código PHP:
Ver original
  1. $o = getopt("f:");
  2. if(isset($o)){
  3.     $p = $o["f"];
  4.     if(isset($p)){
  5.         if($Db->num_rows("Select * from ssl_emails where id_mail='{$p}'",__FILE__,__LINE__)){
  6.             $query = $Db->query("Select * from ssl_emails where id_mail='{$p}'",__FILE__,__LINE__);
  7.             while($emails = $Db->fetch_array($query,__FILE__,__LINE__)){
  8.                 pclose(popen('start /B C:\wamp\bin\php\php5.3.8\php.exe  C:\wamp\www\mail.php -f "'.$p.'"',"r"));
  9.                 sleep(5);
  10.             }
  11.            
  12.         }
  13.     }
  14. }

mail.php

Código PHP:
Ver original
  1. $o = getopt("f:");
  2. if(isset($o)){
  3.     $p =    trim($o["f"]);
  4.     if(isset($p) && $Db->num_rows("Select * from ssl_emails where id_mail='{$p}' and estado='pendiente'",__FILE__,__LINE__) > 0){
  5.         $mail_data = $Db->fetch("Select * from ssl_emails where id_mail='{$p}' and estado ='pendiente'",__FILE__,__LINE__);
  6.         $tiempo_inicio = microtime(true);
  7.         ob_start();
  8.         echo getPostHTML($mail_data['sygo']);
  9.         $salida1 = ob_get_contents();
  10.         require 'plugins/phpmailer/PHPMailerAutoload.php';
  11.         $mail = new PHPMailer();
  12.  
  13.         $mail->FromName = "SyGO Industrias Anros"; // readable name
  14.         $mail->Subject = "Usted ha sido involucrado en un nuevo SyGO";
  15.         $mail->Body    = $salida1;
  16.         $mail->Host = "ssl://smtp.gmail.com"; // GMail
  17.         $mail->Port = 465;
  18.         $mailer->SMTPSecure = 'ssl';
  19.         $mail->isHTML(true);
  20.         $mail->IsSMTP(); // use SMTP
  21.         $mail->SMTPAuth = true; // turn on SMTP authentication
  22.         $mail->From = $mail->Username;
  23.         $mail->AddAddress($mail->Username);
  24.         $mail->AddBCC($mail_data['para']);
  25.         if( !$mail->Send()){
  26.             $error = "El mensaje no fue enviado: {$mail->ErrorInfo}";
  27.             $Db->query("update ssl_emails set estado = 'error' where id_mail = '{$p}' and id = '{$mail_data['id']}'",__FILE__,__LINE__);
  28.         }else{
  29.             $error = "mensaje fue enviado correctamente";
  30.             $Db->query("update ssl_emails set estado = 'enviado' where id_mail = '{$p}' and id = '{$mail_data['id']}'",__FILE__,__LINE__);
  31.         }
  32.         $tiempo_fin = microtime(true);
  33.         $Gf->logEmail($tiempo_inicio,$tiempo_fin,$mail_data['para'],$error,$salida1);
  34.        
  35.     }else{
  36.         $Gf->logEmail(0,1,"No-paso-nada","no se encontro respuesta",'nada');
  37.     }
  38. }


Ahora bien, todo el proceso funciona "muy bien" solo que me da error que ya mencione antes; ahora bien cuando cargo el archivo mail.php desde el navegador los correos se envían perfectamente.
__________________
Solo soy un simple fanático que mata el tiempo de la mejor manera.