LINUX AS3+Oracle 9.2||10.20.1从Oracle成功发送邮件:

示例如下:

具体的测试环境:LINUX AS3 , Oracle 9.0.2.4

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

PL/SQL Release 9.2.0.4.0 - Production

CORE 9.2.0.3.0 Production

TNS for Linux: Version 9.2.0.4.0 - Production

NLSRTL Version 9.2.0.4.0 - Production

SQL> select * from v$version;

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE 10.2.0.1.0 Production

TNS for Linux: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

MAIL服务器为WIN2003,WINMAIL

1.保证ORACLE服务器到MAIL服务器网络畅通,25端口打开

2.创建发送邮件的procedure如下:

---------------------------------------

CREATE OR REPLACE PROCEDURE SEND_MAIL

(as_sender in varchar2, --邮件发送者

as_recp in varchar2, --邮件接收者

as_subject in varchar2, --邮件标题

as_msg_body in varchar2) --邮件内容

IS

ls_mailhost varchar2(30) := 'mail server'; -- address or IP

lc_mail_conn utl_smtp.connection;

ls_subject varchar2(100);

ls_msg_body varchar2(20000);

ls_username varchar2(256) := 'usercode';

ls_password varchar2(256) := 'password';

BEGIN

lc_mail_conn := utl_smtp.open_connection(ls_mailhost, 25);

utl_smtp.helo(lc_mail_conn, ls_mailhost);

utl_smtp.command(lc_mail_conn, 'AUTH LOGIN');

utl_smtp.command(lc_mail_conn, demo_base64.encode(utl_raw.cast_to_raw(ls_username)));

utl_smtp.command(lc_mail_conn, demo_base64.encode(utl_raw.cast_to_raw(ls_password)));

ls_subject := 'Subject: [' || upper(sys_context('userenv', 'db_name')) || '] - ' || as_subject;

ls_msg_body := as_msg_body;

utl_smtp.mail(lc_mail_conn, '<'||as_sender||'>'); --这里的'<' 一定要写,不然会出现permanent error

utl_smtp.rcpt(lc_mail_conn, '<'||as_recp||'>');--这里的'<' 一定要写,不然会出现permanent error

utl_smtp.open_data(lc_mail_conn);

ls_msg_body := 'From: ' || as_sender || chr(13) || chr(10) || 'To: ' || as_recp || chr(13) || chr(10) || ls_subject ||

chr(13) || chr(10) || chr(13) || chr(10) || ls_msg_body;

utl_smtp.write_raw_data(lc_mail_conn, utl_raw.cast_to_raw(ls_msg_body)); --这样写subject可以支持中文但body内容不支持中文;

-- utl_smtp.write_data(lc_mail_conn, ls_msg_body); --这样写subject不支持中文

utl_smtp.close_data(lc_mail_conn);

utl_smtp.quit(lc_mail_conn);

EXCEPTION

WHEN UTL_SMTP.INVALID_OPERATION THEN

dbms_output.put_line('invalid operation');

WHEN UTL_SMTP.TRANSIENT_ERROR THEN

dbms_output.put_line('transient error');

WHEN UTL_SMTP.PERMANENT_ERROR THEN

dbms_output.put_line('permanent error');

WHEN OTHERS THEN

dbms_output.put_line('others');

end send_mail;

3.执行发送邮件:

exec send_mail('heyu@163.net','admin@163.net','我我','this is a oracle test mail');

注意事项:上面的过程如果在编译中出现demo_base64.encode must be declared,请大家创建下面的包和包体;

---------------------------------

CREATE OR REPLACE PACKAGE demo_base64 IS

-- Base64-encode a piece of binary data.

--

-- Note that this encode function does not split the encoded text into

-- multiple lines with no more than 76 bytes each as required by

-- the MIME standard.

文章转载自网管之家:http://www.bitscn.com/pdb/oracle/200804/137713.html

实例讲解如何通过Oracle成功发送邮件-入门基础相关推荐

  1. 炒股入门初学者基础知识讲解,如何掌握新手炒股入门基础知识

    对一些刚入股市的新手来讲,要学习的股票术语和一些图标实在是太多了,很多的新手在炒股的时候不知道炒股的技巧是什么,毕竟万事开头难,所以大家要多了解一些基础的知识.下面为大家介绍下QR技术分析社区中关于炒 ...

  2. oracle自学入门教程,Oracle学习快速入门基础教程

    修改密码方法:1.SQL>: grant connect to USRNAME identified by USRPWD :2.SQL>: alter user USRNAME ident ...

  3. Oracle 10g sql 入门基础知识 笔记 第一部分

    1.orcale 数据库 DDL 定义语言  create drop  DML 操作语言  insert  delete update DCL 控制语言  grant revoke  commit o ...

  4. ztree树封装 json实例_小白7天入门PHP Web开发 - Day 6[下](综合)个人博客实例讲解用户数据的存储...

    <小白7天入门PHP Web开发>系列文章,面向单纯善良的完全不懂Web开发编程的入门速成课程,小白们如果感兴趣可以研读此系列文章,也可以连线提问.各路大神有何指教还请指点一二.希望各路大 ...

  5. Activiti工作流从入门到入土:完整Hello World大比拼(Activiti工作流 API结合实例讲解)

    文章源码托管:https://github.com/OUYANGSIHAI/Activiti-learninig 欢迎 star !!! 本来想着闲来无事,前面在项目中刚刚用到了工作流 Activit ...

  6. activiti api文档_【白银人机】Activiti 工作流从入门到入土:完整 hello world 大比拼(API 结合实例讲解)...

    点击上方"好好学java",选择"置顶"公众号 重磅资源.干货,第一时间送达 重磅推荐  ① 纯福利 | 公众号资源大汇总,一年才一次! ② 重磅!!2018年 ...

  7. Activiti工作流从入门到入土:完整Hello World大比拼(Activiti工作流 API结合实例讲解)...

    文章源码托管:github.com/OUYANGSIHAI- 欢迎 star !!! 本来想着闲来无事,前面在项目中刚刚用到了工作流 Activiti 框架,写写博客的,但是,事情总是纷纷杂杂,一直拖 ...

  8. linux Shell(脚本)编程入门实例讲解详解

    linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集, ...

  9. linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

    前言 本文特点 授之以渔:了解命令学习方法.用途:不再死记硬背,拒绝漫无目的: 准确无误:所有命令执行通过(环境为centos7),拒绝复制粘贴: 实用性高:命令多为实际工作中用到的,实例讲解,拒绝纯 ...

最新文章

  1. 使用localStorage实现历史记录搜索功能也就是天猫app历史记录存储方便浏览
  2. 使用 Python 进行稳定可靠的文件操作
  3. 利用扩展事件进行调优和Troubleshooting PPT分享
  4. sklearn模型评估
  5. ASP.NET MVC Global.cs - 应用程序事件
  6. 刘良华(1969-),男,宁波市智慧城市规划标准发展研究院研究室副主任.
  7. C# 使用PictureBox控件--点击切换图片
  8. 设计模式(二十三)—— 模板方法
  9. “云时代架构”经典文章阅读感想八
  10. 【回归预测】基于matlab GA优化BP回归预测(含优化前的对比)【含Matlab源码 1790期】
  11. NOR Flash、NAND Flash、SPI Flash、CFI Flash
  12. 初一上册数学用计算机进行运算,初一上册数学
  13. 微信小程序mpvue框架
  14. 服务器功耗计算器_无服务器在您的用例中便宜吗? 用这个计算器找出答案。
  15. 面试那些事儿- UI设计面试常见问题
  16. Android组件化入门,分享一点面试小经验
  17. Visual studio 2017中 Javascript对于Xrm对象模型没有智能提示的解决办法
  18. Mircrosoft Visual C++ Runtime Library提示窗口为何黏着桌面
  19. 大数据算法_看过来!2019“神气”大数据算法与应用赛决赛在即
  20. LNMP环境搭建(用阿里云epel源安装)

热门文章

  1. mysql ---- limit使用方式
  2. 【Hadoop 分布式部署 五:分布式部署之分发、基本测试及监控】
  3. HP Z240组建磁盘阵列RAID1
  4. Jquery给基本控件的取值、赋值
  5. ASP.NET中过滤HTML字符串的两个方法
  6. Oracle学习笔记:备份、还原、恢复的一点理解
  7. 9.28 linux系统基础优化
  8. kubectl 命令管理(1)
  9. java构造顺序_Java构造顺序
  10. 前端必看 | 2D游戏化互动入门基础知识