【那些ORCALE DB可以做到的事】
如果你的DB是 ORACLE 10g 以上 那么就可以使用 package UTL_MAIL 提供的功能, 发邮件只需要一步就可以做到。 但是前期需要做一些DB的setting,比如grant permission,设置ACL之类的,这里就没有仔细研究setting了,下面来介绍一下我们怎么用
UTL_MAIL提供三种方法发送Email
SEND 普通发送,无附件
-
SEND_ATTACH_VARCHAR2 字符附件 (我理解就是可以有txt文本的附件)
SEND_ATTACH_RAW 字节附件 (还没有试过)
-- 在PROCEDURE中的实现邮件的发送
-- v_message 邮件内容
-- v_subject 邮件标题
-- v_att_message 附件内容
PROCEDURE EMAIL_SP(v_message varchar2,v_subject varchar2,v_att_message varchar2) IS
v_all_message varchar2(20000);
BEGIN
v_all_message :=
'<font face="Calibri">
<p>Dear XXX,</p>
' || v_message ||
'<p>Thanks and Regards</p>';
--有文本附件的
SYS.UTL_MAIL.SEND_ATTACH_VARCHAR2(
sender => 'test@'||SYS_CONTEXT('USERENV', 'SERVER_HOST')||'.test.com',
recipients => 'test@test.com',
subject => v_subject,
MESSAGE => v_all_message,
mime_type => 'text/html; charset=us-ascii',
attachment => v_att_message);
--没有附件的
SYS.UTL_MAIL.SEND(sender => 'test@'||SYS_CONTEXT('USERENV', 'SERVER_HOST')||'.test.com',
recipients => 'test@test.com',
subject => v_subject,
MESSAGE => v_all_message,
mime_type => 'text/html; charset=us-ascii');
END EMAIL_SP;
为了拿到环境的server host来区别是在测试环境还是生产环境发送出来的邮件提醒
SYS_CONTEXT('USERENV', 'SERVER_HOST')
官方文档:
ORACLE DOCS