用Oracle自动发邮件
来源:互联网 发布:麦迪生涯数据统计 编辑:程序博客网 时间:2024/05/16 01:54
用Oracle自动发邮件 2013-01-18 16:21:16
分类: Linux
原文地址:用Oracle发邮件 作者:arron0754
最近有空研究了一下用Oracle自带UTL_SMTP发送邮件的方法,标准步骤如下:
1.建立到SMTP Server的连接: UTL_SMTP.OPEN_CONNECTION
2.执行初始握手信号: UTL_SMTP.EHLO/HELO
2.5 设置SMTP服务器登录校验(看需要)
3.设置发件人: UTL_SMTP.MAIL
4.设置收件人: UTL_SMTP.RCPT
5.打开数据流: UTL_SMTP.OPEN_DATA
6.写邮件内容: UTL_SMTP.WRITE_RAW_DATA
包括
邮件的头部
Date: 2012 12 19 17:25:00||UTL_TCP.CRLF
From: 发件人||UTL_TCP.CRLF
To:收件人||UTL_TCP.CRLF
Subject:邮件主题|| UTL_TCP.CRLF || UTL_TCP.CRLF
邮件正文
7.关闭数据流: UTL_SMTP.CLOSE_DATA
8.退出连接: UTL_SMTP.QUIT
参考样例:
1. CREATE OR REPLACE PROCEDUREsend_mail(p_recipient VARCHAR2, --邮件接收人
2. p_subject VARCHAR2, --邮件标题
3. p_message VARCHAR2 --邮件正文
4. )
5. IS
6. --下面四个变量请根据实际邮件服务器进行赋值
7. v_mailhost VARCHAR2(30) := 'mail.gxlu.com.cn'; --SMTP服务器地址
8. v_user VARCHAR2(30) := 'abc'; --登录SMTP服务器的用户名
9. v_pass VARCHAR2(20) := '123456'; --登录SMTP服务器的密码
10. v_sender VARCHAR2(50) := 'abc@gxlu.com.cn'; --发送者邮箱,一般与 ps_user 对应
11. v_connUTL_SMTP.connection; --到邮件服务器的连接
12. v_msg VARCHAR2(4000); --邮件内容
13. BEGIN
14. v_conn := UTL_SMTP.open_connection(v_mailhost, 25);
15. UTL_SMTP.ehlo(v_conn, v_mailhost); --是用 ehlo() 而不是 helo()函数
16. --否则会报:ORA-29279: SMTP永久性错误: 503 5.5.2 Send hellofirst.
17. UTL_SMTP.command(v_conn, 'AUTH LOGIN'); -- smtp服务器登录校验
18. UTL_SMTP.command(v_conn,
19. UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user))));
20. UTL_SMTP.command(v_conn,
21. UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_pass))));
22. UTL_SMTP.mail(v_conn, '<' || v_sender || '>'); --设置发件人
23. UTL_SMTP.rcpt(v_conn, '<' || p_recipient || '>'); --设置收件人
24. --创建要发送的邮件内容注意报头信息和邮件正文之间要空一行
25. v_msg := 'Date:' || TO_CHAR(SYSDATE, 'yyyy mm ddhh24:mi:ss') ||
26. UTL_TCP.CRLF || 'From: ' || v_sender || '' || UTL_TCP.CRLF ||
27. 'To: ' || p_recipient || '' || UTL_TCP.CRLF || 'Subject: ' ||
28. p_subject || UTL_TCP.CRLF || UTL_TCP.CRLF --这前面是报头信息
29. || p_message; --这个是邮件正文
30. UTL_SMTP.open_data(v_conn); --打开流
31. UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(v_msg)); --这样写标题和内容都能用中文
32. UTL_SMTP.close_data(v_conn); --关闭流
33. UTL_SMTP.quit(v_conn); --关闭连接
34. EXCEPTION
35. WHENOTHERS THEN
36. DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);
37. DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack);
38. END send_mail;
- 用Oracle自动发邮件
- oracle 11G utl_mail 自动发邮件
- oracle监控自动发邮件预警
- 用Java自动发邮件
- C#自动发邮件
- perl 自动发邮件
- linux自动发邮件
- Python自动发邮件
- 自动发邮件脚本
- 用oracle发邮件(功能很全)
- Oracle 发邮件
- [ORACLE]UTL_SMTP发邮件
- 使用oracle发邮件
- oracle 发邮件功能
- ASP实现自动发邮件
- C#实现自动发邮件
- msmtp+mutt自动发邮件
- SQL SERVER自动发邮件
- git pull报错
- luogu1078【2012普及】文化之旅(dfs)
- python字符串操作
- MacOs安装Hadoop,伪分布式配置
- 闰年判定
- 用Oracle自动发邮件
- 一些感悟吧---记第一次腾讯校招笔试
- 关于php时间,utc,time()关系
- Installing FLTK 1.3.3 under Visual Studio Community 2013
- MongoDb数据库学习基础语法(二)
- Python os模块
- ServletContextFactory.getServletContext().getRealPath("/")的作用
- linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义
- 一次简单的分析手机APK病毒木马