如何在oracle email中发送Email

二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
天真 无知 理想
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(2499)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_081071',
blogTitle:'用Oracle发邮件',
blogAbstract:'
1.创建过程:
CREATE OR REPLACE PROCEDURE send_mail(p_recipient VARCHAR2, -- 邮件接收人p_subject VARCHAR2, -- 邮件标题p_message VARCHAR2-- 邮件正文)IS--下面四个变量请根据实际邮件服务器进行赋值v_mailhost VARCHAR2(30) := \'smtp.yeah.net\'; --SMTP服务器地址v_user VARCHAR2(30) := \'zhchf_52\'; --登录SMTP服务器的用户名v_pass VARCHAR2(20) := \'xxxxxx\'; --登录SMTP服务器的密码',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:4,
publishTime:9,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'天真 无知 理想',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}mctp oracle发送邮件的存储过程很实用可以 Linux Network 网络 249万源代码下载-
&文件名称: mctp& & [
& & & & &&]
&&所属分类:
&&开发工具: PHP
&&文件大小: 1 KB
&&上传时间:
&&下载次数: 0
&&提 供 者:
&详细说明:oracle发送邮件的存储过程很实用可以发送-Oracle the process of sending a message is very useful to send
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&mctp.sql
&输入关键字,在本站249万海量源码库中尽情搜索:使用UTL_SMTP包实现存储过程邮件发送
注意:使用QQ邮箱的话密码需要第三方验证方式才能通过哦验证 方式:http://service./cgi-bin/help?subtype=1&&id=28&&no=10012561、安装UTL_MAIL包UTL_MAIL是在Oracle 10g推出的新邮件发送开发包。之前Oracle 8i开始,支持使用utl_smtp包进行RFC所定义的简单邮件传输协议(SMTP)。使用UTL_MAIL要简单与传统方式,免除很多额外工作。默认情况下,UTL_MAIL工具包是没有安装到Oracle程序包中的,如果需要使用需要额外进行安装。安装的方法是在sys用户下,调用$ORACLE_HOME/rdbms/admin目录下的两个脚本文件。SQL& conn /SQL& @$ORACLE_HOME/rdbms/admin/utlmail.sqlPackage created.Synonym created.SQL& @$ORACLE_HOME/rdbms/admin/prvtmail.plbPackage created.Package body created.Grant succeeded.Package body created.&No errors.sys用户下创建CREATE OR REPLACE PROCEDURE PRC_sendmail(& & p_receiver &VARCHAR2, & & -- 邮件接收人& & p_subject & VARCHAR2, & & -- 邮件标题& & p_message & VARCHAR2 & & &-- 邮件正文)IS& & --下面四个变量请根据实际邮件服务器进行赋值& & v_smtphost & & & & & VARCHAR2(30) & & & := ''; & & & & & & & & &--SMTP服务器地址(hotmail为,测试未通过)& & v_smtpport & & & & & number(5) & & & & &:=25; & & & & & & & & & & & & & & & & & & & --smtp服务端口& & v_user & & & & & & & VARCHAR2(30) & & & := ''; & & & & &--登录SMTP服务器的用户名& & v_pass & & & & & & & VARCHAR2(20) & & & := 'xxxxryngpsxqxxxx'; & & & & --登录SMTP服务器的密码--QQ邮箱的话要使用第三方验证方式才行& & v_sender & & & & & & VARCHAR2(50) & & & := ''; & & & & --发送者邮箱,一般与 ps_user 对应& & v_conn & & & & & & & UTL_SMTP. & & & & & & & & & & & & & & & & & & & & & --到邮件服务器的连接& & v_msg & & & & & & & &varchar2(4000); & & & & & & & & & & & & & & & & & & & & & & & & & &--邮件内容& &&BEGIN& & v_conn := UTL_SMTP.open_connection(v_smtphost, v_smtpport);& & --是用 ehlo() 而不是 helo() 函数& & --否则会报:ORA-29279: SMTP 永久性错误: 503 5.5.2 Send hello first.& & UTL_SMTP.ehlo(v_conn, v_smtphost);&& & -- smtp服务器登录校验& & mand(v_conn, 'AUTH LOGIN'); & & & & & && & mand(v_conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user))));& & mand(v_conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_pass))));& & --设置发件人及收件人& & UTL_SMTP.mail(v_conn, '&'||v_sender||'&');& & UTL_SMTP.rcpt(v_conn, '&'||p_receiver||'&');& & -- 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行& & v_msg :='Date:'|| TO_CHAR(SYSDATE, 'yyyy mm dd hh24:mi:ss')& & & & & & || UTL_TCP.CRLF || 'From: '|| v_sender || ''& & & & & & || UTL_TCP.CRLF || 'To: ' || p_receiver || ''& & & & & & || UTL_TCP.CRLF || 'Subject: ' || p_subject& & & & & & || UTL_TCP.CRLF || UTL_TCP.CRLF & & & & &-- 这前面是报头信息& & & & & & || p_ & & & & & & & & & & & & & & & & & & & &-- 这个是邮件正文& & --打开流& & UTL_SMTP.open_data(v_conn);&& & --标题和内容都都可用中文 & & & & & & & & & & & & & & & & &&& & UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(v_msg)); && & --关闭流&& & UTL_SMTP.close_data(v_conn); && & --关闭连接 & & & & & & & & & & & & & & & &&& & UTL_SMTP.quit(v_conn); & & & & & & & & & & & & & & & & & & & &&EXCEPTION&WHEN OTHERS THEN& & &DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);& & &DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack);& & &UTL_SMTP.quit(v_conn);END PRC_sys用户下调用:exec PRC_sendmail(p_receiver =& '',p_subject =& 'ORACLE发送邮件',p_message =& '第一个用oracle发送的邮件成功了');参考博客1:http://blog.itpub.net//viewspace-700327/参考博客2:http://blog.chinaunix.net/uid--id-3576270.html
最新教程周点击榜
微信扫一扫Oracle11g环境下利用utl_smtp创建发送邮件的存储过程 - Oracle - 次元立方网 - 电脑知识与技术互动交流平台
Oracle11g环境下利用utl_smtp创建发送邮件的存储过程
网上太多发邮件储存过程,我就不转发了,弄个简单的作为示例;
create or replace procedure Send_mail(mail_body varchar2) is
varchar2(20) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('')));
user_paswd varchar2(20) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('pass')));
lv_mail_header varchar2(200):='From:'||utl_tcp.CRLF||
'To:'||utl_tcp.CRLF||
'Subject:Oracle数据库'||utl_tcp.CRLF;
lv_mail_content varchar2(2000);
lv_mail_content := utl_tcp.CRLF||mail_
smtp_conn := utl_smtp.open_connection('',25);
utl_smtp.helo(smtp_conn,'');
mand(smtp_conn,'AUTH LOGIN');
mand(smtp_conn,user_name); --邮件用户名
mand(smtp_conn,user_paswd); --邮件密码
utl_smtp.mail(smtp_conn,'&&'); --发件人邮箱
utl_smtp.rcpt(smtp_conn,'&&'); --收件人邮箱
utl_smtp.open_data(smtp_conn);
utl_smtp.write_data(smtp_conn,utl_raw.cast_to_raw(lv_mail_header));
utl_smtp.write_raw_data(smtp_conn,utl_raw.cast_to_raw(lv_mail_content));
utl_smtp.close_data(smtp_conn);
utl_smtp.quit(smtp_conn);
when others then
utl_smtp.quit(smtp_conn);
--储存过程已创建
第二步直接测试函数;
send_mail('测试内容');
ORA-29278: SMTP 临时性错误: 421 Service not available
ORA-06512: 在 &SYS.UTL_SMTP&, line 21
ORA-06512: 在 &SYS.UTL_SMTP&, line 97
ORA-06512: 在 &SYS.UTL_SMTP&, line 139
ORA-06512: 在 &SYS.UTL_MAIL&, line 405
ORA-06512: 在 &SYS.UTL_MAIL&, line 594
ORA-06512: 在 line 2
话说我第一次看到这个错误非常震惊,因为整个邮件发送的存储过程是先用PL/SQL直接测试代码后,再封装到存储过程中的,后来经过搜索才知道为了更细致地控制网络权限,Oracle 11g中针对UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR的访问设置了单独的权限访问控制方式(ACL).
OK,第三步,设置ACL;
--ACL第一步,创建
dbms_network_acl_admin.create_acl(acl
=& 'httprequestpermission.xml',
--文件名,可以任意取名
DESCRIPTION =& 'Normal Access',
=& 'CONNECT',
=& 'connect',
start_date
--必须要提交;
然后检查是否创建了该 ACL控制文件;
SQL& SELECT any_path FROM resource_view WHERE any_path like '/sys/acls/%.xml';
如果列表里出现刚才创建的文件httprequestpermission.xml,请继续ACL第二步
--ACL第二步,授权用户(示例用scott作为测试)
dbms_network_acl_admin.add_privilege(acl
=& 'httprequestpermission.xml',
=& 'SCOTT',
--用户,请按照实际变更
=& 'connect',
start_date =& null,
--ACL第三步,添加主机或域名
dbms_network_acl_admin.assign_acl(acl
=& 'httprequestpermission.xml',
=& '',
--http网页地址
lower_port =& 80,
--http端口
upper_port =& NULL);
dbms_network_acl_admin.assign_acl(acl
=& 'httprequestpermission.xml',
=& '.cn',
--smtp服务器地址
lower_port =& 25,
--smtp端口
upper_port =& NULL);
最后就是再次测试存储过程
SQL& begin
send_mail(mail_body =& 'afafagaga');
PL/SQL procedure successfully completed
没有任何错误,邮件正确收到;(本文测试环境:Oracle 11.2.0.0,OS:Windows 2008 Server)
(作者测试过程中曾遇到过
ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝;
ORA-29278: SMTP 临时性错误: 421 Service not available;
ORA-44416: ACL 无效: 无法解析的主用户 'AGENT'
这三个主要错误,按照上述步骤均能解决这些问题)
延伸阅读:
下图是少校AIX装库的坎坷经历:这就是赤果果的工程经...
本教程为 李华明 编著的iOS-Cocos2d游戏开发系列教程:教程涵盖关于i......
专题主要学习DirectX的初级编程入门学习,对Directx11的入门及初学者有......
&面向对象的JavaScript&这一说法多少有些冗余,因为JavaScript 语言本......
Windows7系统专题 无论是升级操作系统、资料备份、加强资料的安全及管......

我要回帖

更多关于 java email 发送附件 的文章

 

随机推荐