* @package gvHIDRA */ include('Mail.php'); include('Mail/mime.php'); define("COL_EMAIL", "dircorreo"); class IgepCorreo { /** * Función que devuelve la dirección de correo de un usuario */ function correoUsuario($usuario) { $respondera = array(); if (empty($usuario)) return $respondera; $conf = ConfigFramework::getConfig(); $dsn = $conf->getDSN('gvh_dsn_ora'); if (empty($dsn)) return $respondera; $conexion = new IgepConexion($dsn); $responder = $conexion->consultar("select u.dcorreoint as \"".COL_EMAIL."\" from tcom_usuarios u where u.usuario = '$usuario'"); if (count($responder)>0) $respondera[0]=$responder[0][COL_EMAIL]; return $respondera; } /** * Función que devuelve la dirección de correo de un nregpgv */ function correoNREGPGV($nregpgv) { $lista = array(); if (empty($nregpgv)) return $lista; if(is_array($nregpgv)) $str_nregpgv= implode("','",$nregpgv); else $str_nregpgv= $nregpgv; return self::correoLista("select u.dcorreoint as \"".COL_EMAIL."\" from tcom_usuarios u where (u.tipousu='N' or u.tipousu='S') and u.nrp in ('$str_nregpgv') group by u.dcorreoint"); } /** Función que devuelve la lista de usuarios a quien enviar el correo según la aplicación * y el módulo */ function correoListaUsuariosModulo($aplicacion,$modulo) { return self::correoLista("select u.dcorreoint as \"".COL_EMAIL."\" from tcom_usuarios u, vcom_modulos_usuarios m where u.usuario = m.usuario and (u.tipousu='N' or u.tipousu='S') and u.dcorreoint is not null and m.modulo = '$modulo' AND m.aplicacion = '$aplicacion' group by u.dcorreoint"); } /** Función que devuelve la lista de todos los usuarios de la aplicación a quien enviar * el correo según el tipo. * 1- todos excluyendo usuarios de tipo role y sólo aquellos de tipo N (normal) o S (sólo listas) */ function correoListaUsuariosAplicacion($aplicacion,$tipo=1) { if ($tipo==1) return self::correoLista("select u.dcorreoint as \"".COL_EMAIL."\" from tcom_aplusu a, tcom_usuarios u where a.usuario=u.USUARIO and a.estadousu<>'R' and (u.tipousu='N' or u.tipousu='S') and u.dcorreoint is not null and a.aplicacion = '$aplicacion' group by u.dcorreoint"); } /** Función que devuelve la lista de usuarios a quien enviar el correo */ function correoLista($selec) { $lista = array(); if (empty($selec)) return $lista; $conf = ConfigFramework::getConfig(); $dsn = $conf->getDSN('gvh_dsn_ora'); if (empty($dsn)) return $lista; $conexion = new IgepConexion($dsn); $direcciones = $conexion->consultar($selec); $destinatarios=array(); foreach ($direcciones as $usupetici) $destinatarios[]=$usupetici[COL_EMAIL]; return $destinatarios; } /** Función para enviar correos sin ficheros anexados * from --> Contiene la dirección de correo del usuario que envia * to --> Contiene un array con los destinatarios * subject --> Asunto del mensaje. * msg --> Texto del mensaje. * responder_a --> Contiene la dirección de correo del usuario a responder * poner_dest --> Indica si queremos que en el correo aparezcan todos los * destinatarios que reciben el correo. En desarrollo no tiene efecto. */ function sinAnexo($from,$to,$subject,$msg,$responder_a,$poner_dest=FALSE) { $usus = implode('; ', $to); //Si estamos en desarrollo, enviamos el correo al usuario que se valida //y no a los destinatarios reales if (ConfIgep::es_desarrollo()) { $datosusuario=IgepSession::dameDatosUsuario(); if (isset($datosusuario['correo'])) { if (count($to)>0) //Concatenamos al mensaje los destinatarios reales $msg = $msg.SALTO_LINEA."Destinatarios de correo reales:".SALTO_LINEA.$usus; $to = array($datosusuario['correo']); } } else { if ($poner_dest) $msg = SALTO_LINEA."Destinatarios del correo:".SALTO_LINEA.$usus.SALTO_LINEA.SALTO_LINEA.$msg; } //Formamos las cabeceras: $headers['From'] = $from; $headers['Reply-to'] = $responder_a; $headers['Subject'] = $subject; $recipients = $to; $body = $msg; $params['host'] = 'smtp.gva.es'; // Creamos el objeto mail usando el método Mail::factory $mail_object =& Mail::factory('smtp', $params); //Mandamos el mensaje a cada destinatario: $resultado=TRUE; while (list($clave, $valor)=each($recipients)) { $headers['To']=$valor; $result = $mail_object->send($valor, $headers, $body); if (!$result || !($result === TRUE)) $resultado=FALSE; } return $resultado; } /**Función para enviar correos con ficheros anexados * from --> Contiene la dirección de correo del usuario que envia * to --> Contiene un array con los destinatarios * subject --> Asunto del mensaje. * msg --> Texto del mensaje. * responder_a --> Contiene la dirección de correo del usuario a responder * tmp_fich --> Nombre del fichero temporal anexo a enviar en el mensaje. * tipofich --> Tipo de fichero * nom_fich --> Nombre del fichero anexo a enviar en el mensaje * poner_dest --> Indica si queremos que en el correo aparezcan todos los * destinatarios que reciben el correo. En desarrollo no tiene efecto. */ /*Se usa el paquete mail_mime (http://pear.php.net/package-info.php?pacid=21): * - mime.php: Create mime email, with html, attachments, embedded images etc. * - mimePart.php: Advanced method of creating mime messages. * - mimeDecode.php - Decodes mime messages to a usable structure. * - xmail.dtd: An XML DTD to acompany the getXML() method of the decoding class. * - xmail.xsl: An XSLT stylesheet to transform the output of the getXML() method back to an email */ function conAnexo($from,$to,$subject,$msg,$responder_a,$tmp_fich,$tipo_fich,$nom_fich,$poner_dest=FALSE) { ////////////////////// NO ESTÁ PROBADA //////////////////////////// $usus = implode('; ', $to); //Si estamos en desarrollo, enviamos el correo al usuario que se valida //y no a los destinatarios reales if (ConfIgep::es_desarrollo()) { $datosusuario=IgepSession::dameDatosUsuario(); if (isset($datosusuario['correo'])) { if (count($to)>0) //Concatenamos al mensaje los destinatarios reales $msg = $msg.SALTO_LINEA."Destinatarios de correo reales:".SALTO_LINEA.$usus; $to = array($datosusuario['correo']); } } else { if ($poner_dest) $msg = SALTO_LINEA."Destinatarios del correo:".SALTO_LINEA.$usus.SALTO_LINEA.SALTO_LINEA.$msg; } //Cabeceras: $hdrs = array('From'=>$from,'Subject' => $subject,'Reply-to'=> $responder_a); //Creamos el objeto de tipo Mail_mime: $mime = new Mail_mime(SALTO_LINEA); if (!$mime->addAttachment($tmp_fich,$tipo_fich,$nom_fich)) $msg.= SALTO_LINEA." No ha podido anexarse el fichero"; $mime->setTXTBody($msg); $body = $mime->get(); $hdrs = $mime->headers($hdrs); $params['host'] = 'smtp.gva.es'; // Creamos el objeto mail usando el método Mail::factory $mail_object =& Mail::factory('smtp', $params); //Mandamos el mensaje a cada destinatario: $resultado=TRUE; while (list($clave, $valor)=each($to)) { $result = $mail_object->send($valor, $hdrs, $body); if (!$result || !($result === TRUE)) $resultado=FALSE; } return $resultado; } } //Fin de la Clase correo ?>