`
mql3686157
  • 浏览: 3263 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle发送邮件

阅读更多
CREATE OR REPLACE PROCEDURE send_mail (smtp_server   IN VARCHAR2,
                                       port          IN NUMBER,
                                       login_user    IN VARCHAR2,
                                       login_pass    IN VARCHAR2,
                                       mailfrom      IN VARCHAR2,
                                       mailto        IN VARCHAR2,
                                       msg_head      IN VARCHAR2,
                                       msg_body      IN CLOB)
AS
   v_offset    NUMBER;
   v_ammount   NUMBER;
   v_position  NUMBER;
   v_length NUMBER;
   v_mailto_tmp1 varchar2(1000);
   v_mailto_tmp2 varchar2(1000);
   mail_conn   UTL_SMTP.CONNECTION;
BEGIN
   mail_conn := UTL_SMTP.open_connection (smtp_server, port);
   UTL_SMTP.helo (mail_conn, smtp_server);
   UTL_SMTP.command (mail_conn, 'AUTH LOGIN');
   UTL_SMTP.command (
      mail_conn,
      UTL_RAW.CAST_TO_VARCHAR2 (
         UTL_ENCODE.base64_encode (UTL_RAW.cast_to_raw (login_user))
      )
   );
   UTL_SMTP.command (
      mail_conn,
      UTL_RAW.CAST_TO_VARCHAR2 (
         UTL_ENCODE.base64_encode (UTL_RAW.cast_to_raw (login_pass))
      )
   );
   UTL_SMTP.mail (mail_conn, mailfrom);

   v_offset := 1;
   v_position := 1;
   v_mailto_tmp2 := mailto;
   v_length := length(v_mailto_tmp2);
   LOOP
     v_position:=instr(v_mailto_tmp2,';');
     if v_position = 0 then
       UTL_SMTP.rcpt (mail_conn, v_mailto_tmp2);
     end if;
     exit when v_position = 0;
     v_length := length(v_mailto_tmp2);
     v_mailto_tmp1 := trim(substr(v_mailto_tmp2,v_offset,v_position-1));
     v_mailto_tmp2 := trim(substr(v_mailto_tmp2,v_position+1,v_length+1-v_position));
     UTL_SMTP.rcpt (mail_conn, v_mailto_tmp1);
   END LOOP;

   UTL_SMTP.open_data (mail_conn);
   UTL_SMTP.write_raw_data(mail_conn, UTL_RAW.cast_to_raw (msg_head));
   v_offset := 1;
   v_ammount := 1900;

   WHILE v_offset < DBMS_LOB.getlength (msg_body)
   LOOP
      UTL_SMTP.write_raw_data (
         mail_conn,
         UTL_RAW.cast_to_raw (
                 DBMS_LOB.SUBSTR (msg_body, v_ammount, v_offset)
              )
      );
      v_offset := v_offset + v_ammount;
      v_ammount :=
         LEAST (v_ammount, DBMS_LOB.getlength (msg_body) - v_ammount);
   END LOOP;

   UTL_SMTP.close_data (mail_conn);
   UTL_SMTP.quit (mail_conn);
END;
分享到:
评论

相关推荐

    Oracle配置邮件自动发送的方法

    在Oracle数据库管理中,设置邮件自动发送是一项重要的任务,它能帮助DBA(数据库管理员)及时获取数据库的状态信息、警告和错误报告。Oracle 10g企业管理器(Grid Control)提供了一个集成的邮件通知功能,使得...

    oracle 发送带附件的邮件

    总结来说,实现Oracle发送带附件的邮件涉及到JavaMail API、JSP编程、PL/SQL包的使用,以及对UTL_SMTP或Java存储过程的调用。通过这些技术,你可以构建一个灵活且强大的邮件系统,满足各种企业级的邮件通信需求。

    Oracle实现发送邮件

    ### Oracle 实现发送邮件 #### 知识点概述 本文将详细介绍如何利用Oracle数据库通过存储过程的方式实现电子邮件的发送及附件上传功能。该方法适用于希望直接在数据库层面处理邮件发送需求的应用场景。此过程涉及...

    Oracle+发送邮件存储过程

    ### Oracle 发送邮件存储过程详解 在IT领域,数据库与应用程序之间的邮件通知功能是一个常见的需求。Oracle数据库提供了强大的工具和API来实现这一功能,其中包括利用存储过程发送邮件的能力。本篇将深入解析一个...

    用oracle发送邮件

    在Oracle数据库环境中,发送邮件是一项常见的任务,尤其在自动化报告、报警或数据交换等场景下。Oracle提供了一种称为UTL_MAIL的内置包,用于在PL/SQL代码中实现邮件发送功能。本篇文章将深入探讨如何利用Oracle的...

    oracle发送邮件存储过程

    总之,Oracle发送邮件的存储过程是通过`UTL_SMTP`包与SMTP服务器通信来实现的,它允许数据库系统自动化发送邮件的任务,提高了工作效率。如果你需要调试或修改这个存储过程,确保你有合适的SMTP服务器设置,并且理解...

    oracle发邮件功能代码编写

    Oracle 发邮件功能代码编写 Oracle 提供了 UTL_SMTP 包,可以发送 EMAIL。UTL_SMTP 包提供了一个通用的 SMTP 客户端实现,可以用来发送电子邮件。下面是一个简单的例子,演示如何使用 UTL_SMTP 包发送电子邮件: ...

    用oracle存储过程发邮件

    用oracle发邮件,主要是运用数据库存储过程实现发送邮件的功能。

    oracle存储过程实现发邮件

    oracle存储过程实现发邮件,oracle存储过程实现发邮件,oracle存储过程实现发邮件

    Oracle实现发送邮件.txt

    本文档完全在Oracle里面用代码进行邮件发送,不需要再写AP程式做排程,以存储过程的方式实现,在Oracle里面建立相关的JOB即可实现定时发送邮件,代码有注释,完全干货。

    oracle 发送邮件 实现方法

    Oracle 发送邮件实现方法 Oracle 发送邮件实现方法是指在 Oracle 数据库中使用 PL/SQL 语言编写的存储过程来发送电子邮件的实现方法。该方法可以实现多种功能,包括支持多收件人、支持中文、支持抄送人、支持大于 ...

    python连接oracle数据库,查询数据到excel并自动qq发送邮件

    使用python连接oracle,执行sql语句,执行结果保存在excel中,通过qq邮件发送结果到你的邮箱。方便工作。

    oracle定时发送邮件

    利用oracle语言,直接引用入数据库中,通过调用存储过程的接口,就能实现发送邮件,不需要做任何更改!

    oracle邮件配置

    Oracle 邮件配置是 Oracle 应用程序中的一项重要功能,允许用户通过电子邮件发送和接收通知、报表和其他业务信息。在本文中,我们将详细介绍 Oracle 邮件配置的步骤和要点。 Oracle 邮件配置步骤 1. 登录 Oracle ...

    Oracle发送SMTP邮件程序

    完全可用的oracle发邮件程序,只要编译一下就可以用

    oracle 邮件发送功能

    根据提供的文件信息,本文将详细解释Oracle数据库中的邮件发送功能,并深入探讨如何通过PL/SQL来实现这一功能。 ### Oracle数据库中的邮件发送功能 Oracle数据库提供了内置的功能来发送电子邮件,这项功能主要通过...

    shell脚本可配置备份oracle数据库异常sendEmail25发邮件.rar

    本资源包含一个名为"shell脚本可配置备份oracle数据库异常sendEmail25发邮件"的压缩包,它提供了一个自动化解决方案,用于定期备份Oracle数据库并在出现异常时发送通知邮件。下面我们将详细探讨其中涉及的关键知识点...

    windows下配合oracle使用的自动发邮件工具和代码

    windows下配合oracle使用的自动发邮件工具和代码,可以再windows下建立自动发邮件计划任务监控数据库,发送报表等。这个工具需要.net frame支撑,如果没有自行下载安装,下载链接:链接:...

    shell脚本可配置备份oracle数据库异常mail465发邮件.rar

    "shell脚本可配置备份oracle数据库异常mail465发邮件.rar"这个压缩包提供了一种自动化解决方案,通过Shell脚本来实现Oracle数据库的备份,并在出现异常时通过电子邮件通知管理员。 首先,我们来详细了解一下Shell...

Global site tag (gtag.js) - Google Analytics