Ningún proveedor de error imaps en el procedimiento almacenado Java

oialë:

Estoy tratando de conseguir correos electrónicos de Gmail usando mi clase Java que se almacenan en la base de datos Oracle. Actualmente uso de bases de datos Oracle 12.2.

Este es mi código fuente de Java:

import java.io.IOException;
import java.sql.SQLException;
import java.util.Properties;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMultipart;


public class GmailInbox {

    public static void main(String[] args) 
    throws SQLException, MessagingException, IOException 
    {
        read();
    }

    public static String read() 
    throws SQLException, MessagingException, IOException 
    { 
      Properties props = new Properties();
      Session session = Session.getDefaultInstance(props, null);
      Store store = session.getStore("imaps");
      store.connect("smtp.gmail.com", "*********@gmail.com","password");
      Folder inbox = store.getFolder("inbox");
      inbox.open(Folder.READ_ONLY);

      int messageCount = inbox.getMessageCount();
      System.out.println("Total Messages:- " + messageCount);

      Message[] messages = inbox.getMessages();

      System.out.println("------------------------------");

      for (int i = messages.length - 1; i >= messages.length-3 ; i--) {
          Message message = messages[i];
          System.out.println("---------------------------------");  
          System.out.println("Email Number " + (i + 1));  
          System.out.println("Subject: " + message.getSubject()); 
          System.out.println("Date: " + message.getReceivedDate()); 
          System.out.println("From: " + InternetAddress.toString(message.getFrom())); 
      }
      inbox.close(true);
      store.close();

      return("Done");
 }

}

Es perfectamente funciona en el IDE de Eclipse.

Cargué esta fuente Java en la base de datos por

loadjava -user <user>/<password> -verbose -resolve <path_to_java_code>

Tanto la clase y Fuente son "válidos" por

select DBMS_JAVA.LONGNAME(OBJECT_NAME) as object_name,
       object_type,
       status,
from user_objects
where object_type like 'JAVA%';

Después de que he creado una función:

create or replace function TestGmail
return varchar2
is language java name
'GmailInbox.read() return String';

Por último, cuando estoy tratando de ejecutar esta clase en Oracle por este código:

declare 
output varchar2(50);
begin 
  output := TestGmail;
  dbms_output.put_line(output);
end;

Estoy consiguiendo el error:

ORA-29532: Java llamada terminada por no detectada excepción de Java: javax.mail.NoSuchProviderException: Ningún proveedor de imaps

¿Hay alguna manera de evitar este error?

MT0:

Usar la loadjavautilidad para almacenar las dependencias necesarias (que parece ser javax.mail.jar) en la base de datos de Oracle de manera que se puede encontrar en su ruta de clase.

Por ejemplo:

loadjava -user <user>/<password> -resolve javax.mail.jar

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=217718&siteId=1
Recomendado
Clasificación