⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 用来JAVA存储过程在ORACLE9I或者10G里面发邮件的例子
💻 TXT
字号:
'##########   My Feature:::::我爱我佳:::::  ############
'#  程序提供: 我爱我佳                                           #
'#  主页地址: http://www.5ienet.com                              #
'#  程序制作: 君三思   QQ:5454589                                #
'#################################################################


1.将压缩包解压至硬盘,进入dos命令窗口,载入类包(表忘了将用户改成你的oracle用户及sid)
C:\>loadjava -user jss/jss@jssweb_jss -r -v -f mail.jar
C:\>loadjava -user jss/jss@jssweb_jss -r -v -f c:\sendmail\lib\activation.jar
C:\>loadjava -user jss/jss@jssweb_jss -r -v -f c:\sendmail\lib\ByteArrayDataSource.class

2.赋权
declare
begin
	dbms_java.grant_permission('JSS','SYS:java.util.PropertyPermission','*','read,write');
	dbms_java.grant_permission('JSS','SYS:java.net.SocketPermission','*','connect,resolve');
	dbms_java.grant_permission('JSS','SYS:java.io.FilePermission','*','read');
end;

3.建立java procedures
打开java sources目录,先执行MailService.sql,再执行MailSender.sql

4.建立packages,此处为演示方便,我将java proc成了function,从实用角度考虑,应该是映射成普通的procedure更常用些,大家根据自己情况建吧

示例:
/**向指定地址发送邮件*/
select Java_SendMail.send('junsansi@sina.com','发送不带附件的html主题','随便发发看看呗hehe',1) from dual;

/**向指定地址发送邮件,有附件*/
select Java_SendMail.send('junsansi@sina.com','发送带附件的html主题','随便发发附件看看呗hehe','e:\sqlnet.log',1) from dual;

/**向指定地址发送邮件,有抄送*/
select Java_SendMail.send('5454589@qq.com','junsansi@sina.com,junsansi@hotmail.com','','再次发送带附件的html主题,cc','随便发发附件看看呗hehe',1) from dual;

/**向指定地址发送邮件,有抄送,有密送,有附件*/
select Java_SendMail.send('5454589@qq.com','junsansi@sina.com,junsansi@hotmail.com','junsansi@sina.com,junsansi@hotmail.com','再次发送带附件的html主题,cc,bcc','随便发发附件看看呗hehe','e:\sqlnet.log',1) from dual;


我感觉通过java存储过程实现的邮发可扩展功能将非常强大,比如你可以在这段脚本的基础上,轻松将附件地址改造为支持网络地址,这样发送过程将能更加便利。


问题解决:

1、如果编译java过程中出现错误,可以通过下列语句找出无效java,并删除,然后重新loadjava
Select 'dbms_java.dropjava(''' || dbms_java.longname(object_name) || ''');'
  from user_objects
 where object_type = 'JAVA CLASS'
   and status = 'INVALID';

2.如果报出Failed to sent the mail...等错误,可以先浏览你udump文件夹下的trc文件,确认问题原因

3.SYS:java.net.SocketPermission赋权时如果*不能起作用,可以直接写明smtp服务器地址。

4.如果你在调试smtp服务器的时候,最好将mailsender.java中
            if (ms == null) {
                makeSta.init();
            }
改为
            //if (ms == null) {
                makeSta.init();
            //}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -