Configuración y uso de JMAIL

Para que Libra pueda gestionar el envío y recepción de correos electrónicos es necesario configurar la base de datos para que el paquete JMAIL se ejecute de forma correcta.

IMPORTANTE: Este procedimiento no es válido para versiones Oracle 11.2.0.4.0 o posteriores (incluida cualquier versión de Oracle 12c).

Primero hay que asignar permisos de Java al usuario de base de datos en que reside Libra, para ello pasaremos la sql permisos_java.sql. Hay que usar el sqlplus de Oracle 10g o superior, es decir, no usar el sqlplus que viene con Oracle Forms 6. Esta sql pide los siguientes parámetros: [Descarga no encontrada]

  • usuario_sys: SYS
  • password_sys: especificar la contraseña del usuario SYS de la base de datos.
  • Cadena_conexion: Cadena de conexión para conectar con la base de datos, por ejemplo si para conectar como libra ponemos LIBRA/PASSWORD@EDISA, pondríamos EDISA.
  • usuario_bd_libra: Usuario de base de datos de libra, normalmente será LIBRA

Si después de indicar la cadena de conexión al pasar el permisos_java.sql da el error ORA-01031 es que se está usando un sqlplus de Oracle 8 (por ejemplo el que trae forms), hay que usar el de Oracle 10g o superior.

Introduzca un valor para usuario_sys: SYS

Introduzca un valor para password_sys: PASSWORDESYS

Introduzca un valor para cadena_conexion: EDISA

ERROR:

ORA-01031: privilegios insuficientes

En caso de estar usando Oracle 11g hay que cargar las librerías mail.jar y activation.jar. En caso de no cargarlas al intentar usar JMAIL nos dará el error: javax.mail.NoSuchProviderException: No provider for Address type: rfc822

Para cargar las librerías hay que copiarlas en una carpeta del servidor de base de datos y por línea de comandos (una vez nos situamos en el directorio en donde se encuentran los archivos) se ejecuta los siguiente (reemplazar <PASSWORD> y <CADENA_CONEXION> por los valores correspondientes):

loadjava -u SYS/<PASSWORD>@<CADENA_CONEXION> -o -r -v -f -noverify -synonym -g public activation.jar

loadjava -u SYS/<PASSWORD>@<CADENA_CONEXION> -o -r -v -f -noverify -synonym -g public mail.jar

 

Los archivos mail.jar y activation.jar se pueden descargar de este enlace:[Descarga no encontrada]

Los permisos se tendrán en cuenta en la próxima conexión por lo que si tenemos alguna conexión abierta hay que cerrarla y volver abrirla.

 

Uso de JMAIL para enviar correo electrónico

IMPORTANTE: Desde Líbra nunca se debe de ejecutar directamente ninguna función del paquete JMAIL, siempre se debe de ejecutar a través del paquete PK_EMAIL. Para más información dirigirse a la documentación de desarrollo, al apartado «Gestión de correos electrónicos».

Una vez configurado en la base de datos para usarlo hay que ejecutar una llamadaa JMAIL.SENDMAIL:

DECLARE
 rdo             VARCHAR2(30);
 v_errormessage  VARCHAR2(4000);
BEGIN
  rdo := jmail.sendmail(<servidor_smtp>,
    <puerto>,
    <usuario_validación_smtp>,
    <password_validación_smtp>,
    <acuse_recibo>,
    <dirección_email_remitente>,
    <dirección_email_destino>,
    <dirección_email_cc>,
    <direccion_email_bcc>,
    <asunto>,
    <cuerpo>,
    v_errormessage,
    <adjuntos>,
    <grabar_log>);
END;
Parámetros:
  • <servidor_smtp>: Dirección del servidor de SMTP.
  • <puerto>: Puerto TCP en el que escucha el servidor SMTP, normalmente el 25
  • <usuario_validación_smtp>: Usuario para validarse en el servidor SMTP, se pasará NULL en caso de que el servidor SMTP no necesite validación
  • <password_validación_smtp>: Contraseña del usuario del parámetro anterior.Se pasará NULL en caso de que el servidor SMTP no necesite validación
  • <acuse_recibo>: Acuse de recibo. Si se pasa S se solicitará confirmación al receptor del mensaje.
  • <dirección_email_remitente>: Dirección de correo electrónico del que envía el mensaje
  • <dirección_email_destino>: Dirección de correo electrónico de destino
  • <dirección_email_cc>: Dirección de correo electrónico para enviar copia CC
  • <dirección_email_bcc>: Dirección de correo electrónico oculta para enviar copia BCC
  • <asunto>: Asunto del correo electrónico
  • <cuerpo>: Cuerpo del mensaje del correo electrónico
  • v_errormessage: Parámetro de retorno, en caso de producirse un error devolverá el texto del error producido.
  • <adjuntos>: Lista de adjuntos. Ver «Tratamiento de adjuntos». Se pasará NULL en caso de no haber adjuntos.
  • <grabar_log>: Grabar LOG en la tabla ed_mail_log

 

Tratamiento de adjuntos

Los adjuntos deben de encontrarse en una carpeta del servidor en donde se está ejecutando la base de datos. Para construir la lista de adjuntos:
DECLARE
  v_attachments  jmail.attachments_list;
  rdo            VARCHAR2(4000);
BEGIN
  v_attachments := jmail.attachments_list('/oracle/archivo1.txt');
  v_attachments := jmail.attachments_list('/oracle/archivo2.txt');
  rdo := jmail.sendmail(..., v_attachements, ..);
END;
/
 


IMPORTANTE:
Al directorio en donde se encuentran los archivos a adjuntar hay que darle permisos de lectura con la siguiente instrucción desde SYS:

exec dbms_java.grant_permission(‘<usuario LIBRA en mayúsculas>’,’java.io.FilePermission’, ‘<directorio>\*’, ‘read’);

Si la base de datos está en Linux cambiar ‘<directorio>*’ por ‘<directorio>/*’ Ejemplo:

exec dbms_java.grant_permission(‘LIBRA’,’java.io.FilePermission’, ‘C:\Oracle\directorios\blobtemp\*’, ‘read’);

Ver los permisos que hay aplicados a Java

Se pueden consultar en la vista DBA_JAVA_POLICY

SELECT *
FROM dba_java_policy;

 

Start typing and press Enter to search

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies