oracle pl/sql发送邮件多个收件人问题
--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发送邮件多个收件人问题相关推荐
- oracle pl/sql 程序设计 历史笔记整理
20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...
- Oracle如何代码编辑,配置UltraEdit为Oracle PL/SQL代码编辑器
配置UltraEdit为Oracle PL/SQL代码编辑器[@more@] 将下文复制到UltraEdit的wordfile.txt的最后,就能实现UltraEdit中对PL/SQL文件语法突出显示 ...
- oracle pl sql示例,oracle PL SQL学习案例(一)
oracle PL SQL学习案例(一) [示例1.1] 查询雇员编号为7788的雇员姓名和工资. 步骤1:用SCOTT/TIGER账户登录SQL*Plus. 步骤2:在输入区输入以下程序: /*这 ...
- Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据
Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...
- Oracle PL SQL 精萃pdf
<Oracle PL SQL 精萃pdf> 下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731009.html
- oracle sql判断相等,Oracle PL/SQL判断两个字段相等或不等问题
Oracle PL/SQL中判断两个两个字段相等或者不相等的时候,常常出现:字段值明明不相等(一个空,一个不空),但是判断不相等的时候就是得不到TRUE. 例如以下代码: ... a1 VARCHA ...
- Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理
Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 ACID原则:即一个事务具有原子性.一致性. ...
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!) 继上篇:ORACLE P ...
- oracle存储过程多分支怎样写,如何从存储过程返回多行? (Oracle PL / SQL)
如何从存储过程返回多行? (Oracle PL / SQL) 我想用一个参数创建一个存储过程,该存储过程将根据参数返回不同的记录集. 这是怎么做的? 我可以从普通SQL中调用它吗? 5个解决方案 65 ...
- [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)...
[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) 原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之 ...
最新文章
- Python基础-socket编程
- 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
- 小程序input框letter-spacing失效,处理方法
- 给array添加元素_前囧(06篇)Array 方法详解
- pandas的自带数据集_pandas.DataFrame.sample随机抽样
- 【BZOJ3555】企鹅QQ,第一次正确的使用哈希A题
- 复旦考研计算机技术,复旦大学计算机技术(专业学位)考研难吗
- HDU1181 变形课【DFS】(废除)
- HDU 6186 2017广西邀请赛:CS Course
- 课程设计——企业网络项目搭建(上)
- Bolt界面引擎 HostWnd的生存周期以及相应的objtree的绑定问题
- lua开发/ 腾讯 Bugly / 截屏 / 遮罩
- 服务器网络修复工具,常用LSP修复工具盘点 让你轻轻松松上网
- r语言 svycoxph_R语言之cox回归分析
- cadence17.2输出BOM清单
- vLive虚拟直播,助力企业打造线上云年会
- 【附源码】计算机毕业设计java在线学习系统的设计与开发设计与实现
- form表单用butten提交后无反应表单提交三种方式
- 下血本买的!Android开发者出路在哪?先收藏了
- 测试cpu新旧软件,Revit2021 VS Revit2020新旧版本软件性能评测