通过Oracle发送EmailOracle认证考试

文章作者 100test 发表时间 2009:08:11 21:44:02
来源 100Test.Com百考试题网


"gklt">   本篇是通过Oracle10g发送Email实例,该Procedure支持中文邮件、HTML代码、多收件人。
  在Procedure中p_receiver为收件人地址,多收件人以“,”(英文逗号)分割,p_sub为邮件标题,p_txt为邮件内容(支持HTML)。代码如下:
  create or replace procedure bsd_sendemail (p_receiver varchar2,p_sub varchar2,p_txt varchar2)
  is
  p_user varchar2(30) := ’’.
  p_pass varchar2(30) := ’’.
  p_sendor varchar2(20) := ’Gnie’.
  p_server varchar2(20) := ’Mail_Server_IP’.
  p_port number := 25.
  p_need_smtp number := 0.
  p_subject varchar2(4000).
  l_crlf varchar2(2) := utl_tcp.crlf.
  l_sendoraddress varchar2(4000).
  l_splite varchar2(10) := ’ ’.
  boundary constant varchar2(256) := ’-----BYSUK’.
  first_boundary constant varchar2(256) := ’--’ || boundary || l_crlf.
  last_boundary constant varchar2(256) := ’--’ || boundary || ’--’ || l_crlf.
  multipart_mime_type constant varchar2(256) := ’multipart/mixed. boundary="’ || boundary || ’"’.
  type address_list is table of varchar2(100) index by binary_integer.
  my_address_list address_list.
  -------------------------分割邮件地址----------------------
  procedure p_splite_str(p_str varchar2,p_splite_flag int default 1) is
  l_addr varchar2(254) := ’’.
  l_len int.
  l_str varchar2(4000).
  j int := 0. --表示邮件地址或者附件的个数
  begin
  /*处理接收邮件地址列表,包括去空格、将.转换为,等*/
  l_str := trim(rtrim(replace(replace(p_str, ’.’, ’,’), ’ ’, ’’), ’,’)).
  l_len := length(l_str).
  for i in 1 .. l_len loop
  if substr(l_str, i, 1) <.>. ’,’ then
  l_addr := l_addr || substr(l_str, i, 1).
  else
  j := j 1.
  if p_splite_flag = 1 then --表示处理邮件地址
  --前后需要加上’<.>.’,否则很多邮箱将不能发送邮件
  l_addr := ’<.’ || l_addr || ’>.’.
  --调用邮件发送过程
  my_address_list(j) := l_addr.
  end if.
  l_addr := ’’.
  end if.
  if i = l_len then
  j := j 1.
  if p_splite_flag = 1 then
  --调用邮件发送过程
  l_addr := ’<.’ || l_addr || ’>.’.
  my_address_list(j) := l_addr.
  end if.
  end if.
  end loop.
  end.
  ----------------------写邮件头和邮件内容--------------------------
  procedure write_data(p_conn in out nocopy utl_smtp.connection,
  p_name in varchar2,
  p_value in varchar2,
  p_splite varchar2 default ’:’,
  p_crlf varchar2 default l_crlf) is百考试题-全国最大教育类网站(www.Examda。com)
  begin
  /* utl_raw.cast_to_raw 对解决中文乱码问题很重要*/
  utl_smtp.write_raw_data(p_conn, utl_raw.cast_to_raw(convert(p_name||p_splite||p_value ||p_crlf, ’ZHS16CGB231280’))).
  end.

相关文章


Oracle中用户profile的用法Oracle认证考试
如何在UNIX系统下自动备份Oracle数据库Oracle认证考试
教你简便实现Oracle数据库文件移动方法Oracle认证考试
Oracle监听器Server端与Client端配置实例Oracle认证考试
通过Oracle发送EmailOracle认证考试
Oracle内存数据库11g和高速缓存11g上市Oracle认证考试
SunSolaris运行Oracle数据库所需的内核参数Oracle认证考试
Oracle9i中自动撤销管理的优点分析Oracle认证考试
调查显示MySQL进一步蚕食Oracle市场Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛