Buscar en este blog

martes, 20 de abril de 2010

Como enviar email a través de una Base de Datos Oracle


Existen muchas maneras de implementar el envío de emails a través de una Base de Datos Oracle, una de ellas es mediante el uso del paquete UTL_MAIL.

A continuación les mostraré una manera muy sencilla y práctica de configurarlo y utilizarlo:


1.- Conectarse a la BD a través de SQL*PLUS como SYSDBA por ejemplo:
$ sqlplus '/ as sysdba'

2.- Crear los objetos necesarios en la base de datos:
SQL> @$ORACLE_HOME/rdbms/admin/utlmail.sql
SQL> @$ORACLE_HOME/rdbms/admin/prvmail.plb

3.- Definir un servidor de correos dentro del archivo de parámetros de la instancia oracle:
SQL> alter system set smtp_out_server = 'servidor_de_correo.dominio.com:25' scope=both;

Nota:
.- La instancia debe estar usando un spfile, sino debe hacer los cambios en el init.ora adicionalmente, para que los cambios queden fijos.
.- 25 es el puerto por defecto del smtp.
.- También puede colocar la dirección IP del servidor en vez del hostname, por ejemplo:
smtp_out_server = '172.5.90.165:25'


Para enviar el mail
1.- Conectarse a SQL*PLUS:
$ sqlplus '/ as sysdba'

2.- exec utl_mail.send( sender=>'direccion@dominio.com', recipients=>'direccion@dominio.com', subject=>'Probando UTL_MAIL', message=>'Esto es una prueba' );

3.- Revisar el inbox o carpeta de entrada del correo electrónico para verificar la llegada del correo.

Nota: Si desea que otros usuarios puedan enviar también correos desde la base de datos, entonces deberá conceder la permisología correspondiente, por ejemplo:

grant execute on utl_mail to usuario;

Saludos