--pl/sql发送邮件多个收件人问题
--
--测试使用pl/sql发送html报表,在网上找了个post_html_mail的procedure,现在测试单个用户可接受,可多用户,但要保证输入的用户正确
--
--附上post_html_mail
create or replace procedure kol_Post_html_mail(p_to                       in   varchar2,p_subject                  in   varchar2,p_text                     in   varchar2   default   null,p_html                     in   varchar2  default   null)isp_smtp_hostname   varchar2(20):='192.168.38.247'; --SMTP serverp_smtp_portnum     varchar2(2):='25';--portp_from               varchar2(100):='sysAdmin@kolinker.com';   --froml_boundary             varchar2(255)   default   'a1B2C3d4e3f2g1';l_connection         utl_smtp.connection;l_body_html           clob   :=   empty_clob;     --This   LOB   will   be   the   email   MESSagel_offset                 number;l_ammount               number;l_temp                     varchar2(32767)   default   null;l_adresses varchar2(1000) := p_to;l_adress   varchar2(50);beginl_connection   :=   utl_smtp.open_connection(   p_smtp_hostname,   p_smtp_portnum   );utl_smtp.helo(   l_connection,p_smtp_hostname);utl_smtp.mail(   l_connection,   p_from   );  -- Send more than one personif (instr(l_adresses, ';') = 0) thenl_adress := l_adresses;utl_smtp.rcpt(   l_connection,   l_adress   );end if;while instr(l_adresses, ';') > 0 loopselect substr(l_adresses, 1, instr(l_adresses, ';')-1) into l_adress from dual;select substr(l_adresses, instr(l_adresses, ';')+1) into l_adresses from dual;utl_smtp.rcpt(   l_connection,   l_adress   );if instr(l_adresses, ';') = 0 thenl_adress := l_adresses;utl_smtp.rcpt(   l_connection,   l_adress   );end if;end loop;  --utl_smtp.rcpt(   l_connection,   p_to   );
l_temp   :=   l_temp   ||   'MIME-Version:   1.0'   ||     chr(13)   ||   chr(10);l_temp   :=   l_temp   ||   'To:   '   ||   p_to   ||   chr(13)   ||   chr(10);l_temp   :=   l_temp   ||   'From:   '   ||   p_from   ||   chr(13)   ||   chr(10);l_temp   :=   l_temp   ||   'Subject:   '   ||   p_subject   ||   chr(13)   ||   chr(10);l_temp   :=   l_temp   ||   'Reply-To:   '   ||   p_from   ||     chr(13)   ||   chr(10);l_temp   :=   l_temp   ||   'Content-Type:   multipart/alternative;   boundary='   ||chr(34)   ||   l_boundary   ||     chr(34)   ||   chr(13)   ||chr(10);--chr(34)   is   "------------------------------------------------------   Write   the   headersdbms_lob.createtemporary(   l_body_html,   false,   10   );dbms_lob.write(l_body_html,length(l_temp),1,l_temp);------------------------------------------------------   Write   the   text   boundaryl_offset   :=   dbms_lob.getlength(l_body_html)   +   1;l_temp       :=   '--'   ||   l_boundary   ||   chr(13)||chr(10);l_temp       :=   l_temp   ||   'content-type:   text/plain;   Charset=UTF-8'   ||chr(13)   ||   chr(10)   ||   chr(13)   ||   chr(10);dbms_lob.write(l_body_html,length(l_temp),l_offset,l_temp);------------------------------------------------------   Write   the   plain   text   portion   of   the   emaill_offset   :=   dbms_lob.getlength(l_body_html)   +   1;dbms_lob.write(l_body_html,length(p_text),l_offset,p_text);------------------------------------------------------   Write   the   HTML   boundaryl_temp       :=   chr(13)||chr(10)||chr(13)||chr(10)||'--'   ||   l_boundary   ||chr(13)   ||   chr(10);l_temp       :=   l_temp   ||   'content-type:   text/html;'   ||chr(13)   ||   chr(10)   ||   chr(13)   ||   chr(10);l_offset   :=   dbms_lob.getlength(l_body_html)   +   1;dbms_lob.write(l_body_html,length(l_temp),l_offset,l_temp);------------------------------------------------------   Write   the   HTML   portion   of   the   messagel_offset   :=   dbms_lob.getlength(l_body_html)   +   1;dbms_lob.write(l_body_html,length(p_html),l_offset,p_html);------------------------------------------------------   Write   the   final   html   boundaryl_temp       :=   chr(13)   ||   chr(10)   ||   '--'   ||     l_boundary   ||   '--'   ||   chr(13);l_offset   :=   dbms_lob.getlength(l_body_html)   +   1;dbms_lob.write(l_body_html,length(l_temp),l_offset,l_temp);------------------------------------------------------   Send   the   email   in   1900   byte   chunks   to   UTL_SMTPl_offset     :=   1;l_ammount   :=   1900;utl_smtp.open_data(l_connection);while   l_offset   <   dbms_lob.getlength(l_body_html)   looputl_smtp.write_raw_data(l_connection,UTL_RAW.CAST_TO_RAW(dbms_lob.substr(l_body_html,l_ammount,l_offset)));l_offset     :=   l_offset   +   l_ammount   ;l_ammount   :=   least(1900,dbms_lob.getlength(l_body_html)   -   l_ammount);end   loop;utl_smtp.close_data(l_connection);utl_smtp.quit(   l_connection   );dbms_lob.freetemporary(l_body_html);end;

转载于:https://www.cnblogs.com/quanweiru/archive/2013/02/19/2916782.html

oracle pl/sql发送邮件多个收件人问题相关推荐

  1. oracle pl/sql 程序设计 历史笔记整理

    20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...

  2. Oracle如何代码编辑,配置UltraEdit为Oracle PL/SQL代码编辑器

    配置UltraEdit为Oracle PL/SQL代码编辑器[@more@] 将下文复制到UltraEdit的wordfile.txt的最后,就能实现UltraEdit中对PL/SQL文件语法突出显示 ...

  3. oracle pl sql示例,oracle PL SQL学习案例(一)

    oracle PL SQL学习案例(一) [示例1.1]  查询雇员编号为7788的雇员姓名和工资. 步骤1:用SCOTT/TIGER账户登录SQL*Plus. 步骤2:在输入区输入以下程序: /*这 ...

  4. Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据

    Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...

  5. Oracle PL SQL 精萃pdf

    <Oracle PL SQL 精萃pdf> 下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731009.html

  6. oracle sql判断相等,Oracle PL/SQL判断两个字段相等或不等问题

    Oracle PL/SQL中判断两个两个字段相等或者不相等的时候,常常出现:字段值明明不相等(一个空,一个不空),但是判断不相等的时候就是得不到TRUE. 例如以下代码: ... a1  VARCHA ...

  7. Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理

    Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 ACID原则:即一个事务具有原子性.一致性. ...

  8. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

    原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE P ...

  9. oracle存储过程多分支怎样写,如何从存储过程返回多行? (Oracle PL / SQL)

    如何从存储过程返回多行? (Oracle PL / SQL) 我想用一个参数创建一个存储过程,该存储过程将根据参数返回不同的记录集. 这是怎么做的? 我可以从普通SQL中调用它吗? 5个解决方案 65 ...

  10. [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)...

    [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) 原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之 ...

最新文章

  1. Python基础-socket编程
  2. 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
  3. 小程序input框letter-spacing失效,处理方法
  4. 给array添加元素_前囧(06篇)Array 方法详解
  5. pandas的自带数据集_pandas.DataFrame.sample随机抽样
  6. 【BZOJ3555】企鹅QQ,第一次正确的使用哈希A题
  7. 复旦考研计算机技术,复旦大学计算机技术(专业学位)考研难吗
  8. HDU1181 变形课【DFS】(废除)
  9. HDU 6186 2017广西邀请赛:CS Course
  10. 课程设计——企业网络项目搭建(上)
  11. Bolt界面引擎 HostWnd的生存周期以及相应的objtree的绑定问题
  12. lua开发/ 腾讯 Bugly / 截屏 / 遮罩
  13. 服务器网络修复工具,常用LSP修复工具盘点 让你轻轻松松上网
  14. r语言 svycoxph_R语言之cox回归分析
  15. cadence17.2输出BOM清单
  16. vLive虚拟直播,助力企业打造线上云年会
  17. 【附源码】计算机毕业设计java在线学习系统的设计与开发设计与实现
  18. form表单用butten提交后无反应表单提交三种方式
  19. 下血本买的!Android开发者出路在哪?先收藏了
  20. 测试cpu新旧软件,Revit2021 VS Revit2020新旧版本软件性能评测

热门文章

  1. Broadcast receiver之我见
  2. 不同网段无法加载ArcGIS Server发布服务解决方法
  3. 【C语言】字符串与整型数值之间的转换
  4. ios 常见问题解决
  5. WRF模式中eta层的设置以及分别对应的高度(转)
  6. Asp.Net中的正则表达式问题可以在此提问,今后大家一起研究!贴出基本语法参考...
  7. datagrid--新增
  8. 《游戏改变企业》一一第 2 章 实时的经济信息反馈(为什么游戏很重要) 游戏改变企业...
  9. BIO、NIO、AIO差别
  10. UML 2中结构图的介绍