UTL_MAIL 包

为了在 PL/SQL 中,提供 email 发送的支持,开发 UTL_MAIL 包,提供一组 API,实现发送简单的邮件和包含附件的邮件。

28.1 相关方法

  1. INIT

包需要的配置信息。

语法如下:

PROCEDURE INIT(
	SMTP_SERVER		VARCHAR2(128),
	SMTP_PORT		INT 		DEFAULT 25,
	SENDER			VARCHAR2(128),
	PASSWORD		VARCHAR2(128)
) ;

参数详解

  • smtp_server smtp 服务器的地址,如 smtp.163.com。
  • smtp_port smtp 的端口号,一般都是 25。
  • sender 设置发送的邮箱,也就是要认证的邮箱。
  • password 设置发送邮箱的密码。
  1. SEND

发送 message 的信息。

语法如下:

PROCEDURE SEND (
    SENDER 		IN 		VARCHAR2,
	RECIPIENTS 	IN 		VARCHAR2,
	CC 			IN 		VARCHAR2 	DEFAULT NULL,
	BCC 		IN 		VARCHAR2 	DEFAULT NULL,
	SUBJECT 	IN 		VARCHAR2 	DEFAULT NULL,
	MESSAGE 	IN 		VARCHAR2,
	MIME_TYPE 	IN 		VARCHAR2 	DEFAULT 'TEXT/PLAIN; CHARSET=US-ASCII',
	PRIORITY 	IN 		INT 		DEFAULT NULL
);

参数详解

  • sender 发送的邮箱地址。
  • recipients 接收邮件的地址。
  • CC 抄送的邮件的地址。
  • BCC 秘密抄送的邮件的地址。
  • subject 邮件的主题。
  • message 邮件的内容,正文部分。
  • mime_type 邮件的内容格式,default is 'text/plain; charset=us-ascii'。
  • priority 优先级(不用设置)。
  1. SEND_ATTACH_RAW

发送带附件的邮件。

语法如下:

PROCEDURE SEND_ATTACH_RAW (
	SENDER 			IN 		VARCHAR2,
	RECIPIENTS 		IN 		VARCHAR2,
	CC 				IN 		VARCHAR2 	DEFAULT NULL,
	BCC 			IN 		VARCHAR2 	DEFAULT NULL,
	SUBJECT 		IN 		VARCHAR2 	DEFAULT NULL,
	MESSAGE 		IN 		VARCHAR2 	DEFAULT NULL,
	MIME_TYPE 		IN 		VARCHAR2 	DEFAULT 'TEXT/PLAIN; CHARSET=US-ASCII',
	PRIORITY 		IN 		INT 		DEFAULT NULL,
	ATTACHMENT 		IN 		BLOB,
	ATT_INLINE 		IN 		BOOLEAN 	DEFAULT TRUE,
	ATT_MIME_TYPE 	IN 		VARCHAR2 	DEFAULT 'APPLICATION/OCTET-STREAM',
	ATT_FILENAME 	IN 		VARCHAR2 	DEFAULT NULL
);

参数详解

  • sender 发送的邮箱地址。
  • recipients 接收邮件的地址。
  • CC 抄送的邮件的地址。
  • BCC 秘密抄送的邮件的地址。
  • subject 邮件的主题。
  • message 邮件的内容,正文部分。
  • mime_type 邮件的内容格式:文本、html 等。缺省为'text/plain;charset=us-ascii'。
  • priority 优先级(不用设置)。
  • attachment 附件。
  • att_inline 附件在文件中显示是否使用下划线。
  • att_mime_type 邮件附件的类型,如文本。
  • att_filename 附件的文件名。

28.2 举例说明

使用包内的过程和函数之前,如果还未创建过系统包,请先调用系统过程创建系统包。

SP_CREATE_SYSTEM_PACKAGES (1,'UTL_MAIL');

例在使用该包前,需要先初始化该包,调用 init 函数,设置使用 smtp 服务器,端口(一般默认 25,设置用于认证的邮箱,认证的密码。设置完后,就可以使用包的函数:send 和 send_attach_raw。

//初始化包的函数
UTL_MAIL.INIT(
	smtp.163.com', //smtp 服务器
	25, //端口
	'utl_mail\@163.com', //认证的邮箱
	'dm_utl_mail' //认证邮箱的密码
);
//发送不带附件的邮件
UTL_MAIL.SEND(
	'utl_mail\@163.com', //发送的邮箱地址
	'recipient\@dameng.com', //接受的邮箱地址
	'',
	'',
	'test', //主题
	'this is a mail for test .', //正文
	'text/plain; charset=us-ascii',//类型
	3
);

//发送带附件的邮件 
UTL_MAIL.SEND_ATTACH_RAW(
	'utl_mail@163.com',
	'recipient@dameng.com',
	'',
	'',
	'test',
	'this is a mail for test .',
	'text/plain; charset=us-ascii',
	3,  								
	//附件二进制的内容    hexiTORAW('1234567890564531813169434196431651398320843126465465465465461564'),
	FALSE,
	'application/octet-stream', //附件的类型
	'attach.zip' //附件的名字
);
微信扫码
分享文档
扫一扫
联系客服