Oiale:
私は、Javaクラスを使用して自分のGmailからのメールは、Oracleデータベースに保存されて取得しようとしています。現在、私は、Oracle Database 12.2を使用します。
これは私の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");
}
}
それは完璧のEclipse IDEで動作します。
私がして、データベースには、このJavaソースをロード
loadjava -user <user>/<password> -verbose -resolve <path_to_java_code>
クラスとソースの両方をすることによって、「VALID」です
select DBMS_JAVA.LONGNAME(OBJECT_NAME) as object_name,
object_type,
status,
from user_objects
where object_type like 'JAVA%';
その後、私は、関数を作成しました:
create or replace function TestGmail
return varchar2
is language java name
'GmailInbox.read() return String';
最後に、私はこのコードによって、Oracleでこのクラスを実行しようとしているとき:
declare
output varchar2(50);
begin
output := TestGmail;
dbms_output.put_line(output);
end;
私はエラーを取得しています:
ORA-29532:キャッチされないJava例外でJavaコールが終了:javax.mail.NoSuchProviderException:IMAPSなしのプロバイダ
このエラーを回避する方法はありますか?
MT0:
使用するloadjava
ユーティリティを(ように見える必要な依存関係を保存するためにjavax.mail.jar
、Oracleはそのクラスパスにそれらを見つけることができるようにデータベースに)。
例えば:
loadjava -user <user>/<password> -resolve javax.mail.jar