utl_mail介绍
utl_mail实用包为oracle10g中新增的用于发送email的工具。使用简单。
utl_mail安装、配置
默认,oracle10g并不会安装该包。可以在sqlplus下通过运行以下脚本安装:
step1: 通过sqlplus运行下面两个脚本文件
{ORACLE_HOME}/RDBMS/Admin/utlmail.sql
{ORACLE_HOME}/RDBMS/Admin/prvtmail.plb
step2: 配置动态初始化参数 smtp_out_server=smtpserver:port[,smtpserver:port,.....]
注意:该smtp服务器必须是普通的方式——发送邮件不需要认证账户信息,不是esmtp!这是很多人遇到的问题。
而且可以配置多个smtp服务器,多么实用的功能。
step3:非常重要的技巧,配置smtp服务器的邮件转发,可以使你的局域网smtp服务器发送internet邮件
step4:记住需要对普通用户赋予可执行utl_mail包的权限
例如:grant execute on utl_mail to public;
utl_mail使用
utl_mail.send(sender => :sender,
recipients => :recipients,
cc => :cc,
bcc => :bcc,
subject => :subject,
message => :message,
mime_type => :mime_type,
priority => :priority);
注意:可以通过设置mime_type来解决中文乱码的问题:mime_type='text/plain;charset=UTF-8'
utl_mail.send_attach_raw
和
utl_mail.send_attach_varchar2(sender => :sender,
recipients => :recipients,
cc => :cc,
bcc => :bcc,
subject => :subject,
message => :message,
mime_type => :mime_type,
priority => :priority,
attachment => :attachment,
att_inline => att_inline,
att_mime_type => :att_mime_type,
att_filename => :att_filename);
用法和utl_mail.send类似的。只是指示 attachment 的内容以附件的形式发送。
可以给这个附件内容指定一个 att_filename,其实必须要给一个文件名,否则在邮件客户端里就和正文消息混在一起了!
注意点:sender、recipients、subject 、[attachment ]是必须字段!