Oracle学习笔记:利用utl_mail包发送email

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 ]是必须字段!

原文地址:https://www.cnblogs.com/jinzhenshui/p/1384756.html