通过触发器+存储过程+hmail邮件服务器实现数据库发邮件功能

本文介绍了如何通过数据库的存储过程和触发器,配合hmail邮件服务器实现在特定业务操作(如订单审核、流程接收)后自动发送邮件通知相关人员。过程中涉及ACL的创建、hmail配置、触发器编写以及解决乱码问题等关键步骤。需要注意的是,此功能可能增加数据库负载,使用时需谨慎。
摘要由CSDN通过智能技术生成

1、创建存储过程

直接复制以下代码,修改邮件服务的参数执行即可,注意若修改存储过程的名称send_mail_srm,记住在末尾也要修改。

CREATE OR REPLACE PROCEDURE send_mail_srm(
         p_recipient VARCHAR2, -- 邮件接收人
         p_subject   VARCHAR2, -- 邮件标题
         p_message   VARCHAR2  -- 邮件正文
   )
   IS

        --下面四个变量请根据实际邮件服务器进行赋值
        v_mailhost  VARCHAR2(30) := '10.128.1.234';  --SMTP服务器地址
       v_user      VARCHAR2(30) := 'srmnotice@xhcnotice.com';    --登录SMTP服务器的用户名
       v_pass      VARCHAR2(20) := 'srmnotice828';    --登录SMTP服务器的密码
       v_sender    VARCHAR2(50) := 'srmnotice@xhcnotice.com';    --发送者邮箱,一般与 ps_user 对应
       
       v_conn  UTL_SMTP. connection ; --到邮件服务器的连接
--       v_msg varchar2(4000);  --邮件内容

  BEGIN

       v_conn := UTL_SMTP.open_connection(v_mailhost, 25);
       UTL_SMTP.ehlo(v_conn, v_mailhost); --是用 ehlo() 而不是 helo() 函数
       --否则会报:ORA-29279: SMTP 永久性错误: 503 5.5.2 Send hello first.

       UTL_SMTP.command(v_conn, 'AUTH LOGIN' );   -- smtp服务器登录校验
       UTL_SMTP.command(v_conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user))));
       UTL_SMTP.command(v_conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_pass))));

       UTL_SMTP.mail(v_conn, v_sender);     --设置发件人
       UTL_SMTP.rcpt(v_conn, 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格式化、昨天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值