* @package igep */ include('Mail.php'); include('Mail/mime.php'); class IgepCorreo { /** * Función que devuelve la dirección de correo de un usuario */ function correoUsuario($usuario) { global $g_dsn_ora; $conexion = new IgepConexion($g_dsn_ora); $respondera=array(); $responder = $conexion->consultar("select u.dcorreoint as \"dircorreo\" from tcom_usuarios u where u.usuario = '".$usuario."'"); if (count($responder)>0) $respondera[0]=$responder[0]["dircorreo"]; return $respondera; } /** 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 IgepCorreo::correoLista("select u.dcorreoint as \"dircorreo\" 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."'"); } /** 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 IgepCorreo::correoLista("select u.dcorreoint as \"dircorreo\" 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."'"); } /** Función que devuelve la lista de usuarios a quien enviar el correo */ function correoLista($selec) { global $g_dsn_ora; $conexion = new IgepConexion($g_dsn_ora); $direcciones = $conexion->consultar($selec); $destinatarios=array(); if (count($direcciones)>0) { $usupetici=array(); $i=0; foreach ($direcciones as $usupetici) { $destinatarios[$i].=$usupetici["dircorreo"]; $i++; } } 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=''; if (count($to)>0) $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()) { if (count($to)>0) //Concatenamos al mensaje los destinatarios reales $msg = $msg."\nDestinatarios de correo reales:\n".$usus; $responder=array(); $responder[0]=$responder_a; $to=$responder; } else { if ($poner_dest) $msg = "\nDestinatarios del correo:\n".$usus."\n\n".$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=''; if (count($to)>0) $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()) { if (count($to)>0) //Concatenamos al mensaje los destinatarios reales $msg = $msg."\nDestinatarios de correo reales:\n".$usus; $responder=array(); $responder[0]=$responder_a; $to=$responder; } else { if ($poner_dest) $msg = "\nDestinatarios del correo:\n".$usus."\n\n".$msg; } $crlf = "\r\n"; //Cabeceras: $hdrs = array('From'=>$from,'Subject' => $subject,'Reply-to'=> $responder_a); //Creamos el objeto de tipo Mail_mime: $mime = new Mail_mime($crlf); if (!$mime->addAttachment($tmp_fich,$tipo_fich,$nom_fich)) $msg.="\n 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 ?>