设为首页 加入收藏

TOP

oracle 邮件发送
2015-11-21 03:26:36 来源: 作者: 【 】 浏览:11
Tags:oracle 邮件 发送
CREATE OR REPLACE PROCEDURE PRC_sendmail
(
? ? p_receiver ?VARCHAR2, ? ? -- 邮件接收人
? ? p_subject ? VARCHAR2, ? ? -- 邮件标题
? ? p_message ? VARCHAR2 ? ? ?-- 邮件正文
)
IS
? ? --下面四个变量请根据实际邮件服务器进行赋值
? ? v_smtphost ? ? ? ? ? VARCHAR2(30) ? ? ? := 'smtp.qq.com'; ? ? ? ? ? ? ? ? ?--SMTP服务器地址(hotmail为smtp.live.com,测试未通过)
? ? v_smtpport ? ? ? ? ? number(5) ? ? ? ? ?:=25; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --smtp服务端口
? ? v_user ? ? ? ? ? ? ? VARCHAR2(30) ? ? ? := '751365252@qq.com'; ? ? ? ? ?--登录SMTP服务器的用户名
? ? v_pass ? ? ? ? ? ? ? VARCHAR2(20) ? ? ? := 'XXXXXX'; ? ? ? ? ? ? ? ? ? ? ? ? ? ? --登录SMTP服务器的密码
? ? v_sender ? ? ? ? ? ? VARCHAR2(50) ? ? ? := '751365252@qq.com'; ? ? ? ? --发送者邮箱,一般与 ps_user 对应
? ? v_conn ? ? ? ? ? ? ? UTL_SMTP.connection; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --到邮件服务器的连接
? ? 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服务器登录校验
? ? UTL_SMTP.command(v_conn, 'AUTH LOGIN'); ? ? ? ? ? ?
? ? UTL_SMTP.command(v_conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user))));
? ? UTL_SMTP.command(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_message; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-- 这个是邮件正文
?
? ? --打开流
? ? 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_sendmail;
/
执行脚本:
SQL> exec PRC_sendmail(p_receiver => '751365252@qq.com',p_subject => 't张ttt',p_message => 'yy在yy');
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MongoDb 创建、更新以及删除文档.. 下一篇Oracle分区表的层次查询如何才能..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: