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数据库管理中,设置邮件自动发送是一项重要的任务,它能帮助DBA(数据库管理员)及时获取数据库的状态信息、警告和错误报告。Oracle 10g企业管理器(Grid Control)提供了一个集成的邮件通知功能,使得...
### Oracle 实现发送邮件 #### 知识点概述 本文将详细介绍如何利用Oracle数据库通过存储过程的方式实现电子邮件的发送及附件上传功能。该方法适用于希望直接在数据库层面处理邮件发送需求的应用场景。此过程涉及...
### Oracle 发送邮件存储过程详解 在IT领域,数据库与应用程序之间的邮件通知功能是一个常见的需求。Oracle数据库提供了强大的工具和API来实现这一功能,其中包括利用存储过程发送邮件的能力。本篇将深入解析一个...
在Oracle数据库环境中,发送邮件是一项常见的任务,尤其在自动化报告、报警或数据交换等场景下。Oracle提供了一种称为UTL_MAIL的内置包,用于在PL/SQL代码中实现邮件发送功能。本篇文章将深入探讨如何利用Oracle的...
总之,Oracle发送邮件的存储过程是通过`UTL_SMTP`包与SMTP服务器通信来实现的,它允许数据库系统自动化发送邮件的任务,提高了工作效率。如果你需要调试或修改这个存储过程,确保你有合适的SMTP服务器设置,并且理解...
Oracle 发邮件功能代码编写 Oracle 提供了 UTL_SMTP 包,可以发送 EMAIL。UTL_SMTP 包提供了一个通用的 SMTP 客户端实现,可以用来发送电子邮件。下面是一个简单的例子,演示如何使用 UTL_SMTP 包发送电子邮件: ...
用oracle发邮件,主要是运用数据库存储过程实现发送邮件的功能。
oracle存储过程实现发邮件,oracle存储过程实现发邮件,oracle存储过程实现发邮件
总结来说,实现Oracle发送带附件的邮件涉及到JavaMail API、JSP编程、PL/SQL包的使用,以及对UTL_SMTP或Java存储过程的调用。通过这些技术,你可以构建一个灵活且强大的邮件系统,满足各种企业级的邮件通信需求。
本文档完全在Oracle里面用代码进行邮件发送,不需要再写AP程式做排程,以存储过程的方式实现,在Oracle里面建立相关的JOB即可实现定时发送邮件,代码有注释,完全干货。
Oracle 发送邮件实现方法 Oracle 发送邮件实现方法是指在 Oracle 数据库中使用 PL/SQL 语言编写的存储过程来发送电子邮件的实现方法。该方法可以实现多种功能,包括支持多收件人、支持中文、支持抄送人、支持大于 ...
使用python连接oracle,执行sql语句,执行结果保存在excel中,通过qq邮件发送结果到你的邮箱。方便工作。
利用oracle语言,直接引用入数据库中,通过调用存储过程的接口,就能实现发送邮件,不需要做任何更改!
Oracle 邮件配置是 Oracle 应用程序中的一项重要功能,允许用户通过电子邮件发送和接收通知、报表和其他业务信息。在本文中,我们将详细介绍 Oracle 邮件配置的步骤和要点。 Oracle 邮件配置步骤 1. 登录 Oracle ...
完全可用的oracle发邮件程序,只要编译一下就可以用
根据提供的文件信息,本文将详细解释Oracle数据库中的邮件发送功能,并深入探讨如何通过PL/SQL来实现这一功能。 ### Oracle数据库中的邮件发送功能 Oracle数据库提供了内置的功能来发送电子邮件,这项功能主要通过...
本资源包含一个名为"shell脚本可配置备份oracle数据库异常sendEmail25发邮件"的压缩包,它提供了一个自动化解决方案,用于定期备份Oracle数据库并在出现异常时发送通知邮件。下面我们将详细探讨其中涉及的关键知识点...
windows下配合oracle使用的自动发邮件工具和代码,可以再windows下建立自动发邮件计划任务监控数据库,发送报表等。这个工具需要.net frame支撑,如果没有自行下载安装,下载链接:链接:...
"shell脚本可配置备份oracle数据库异常mail465发邮件.rar"这个压缩包提供了一种自动化解决方案,通过Shell脚本来实现Oracle数据库的备份,并在出现异常时通过电子邮件通知管理员。 首先,我们来详细了解一下Shell...