代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
PLSQL
】
Oracle9发送邮件过程
作者:
Dezai.CN
/ 发布于
2011/3/29
/
1149
<div>CREATE OR REPLACE PROCEDURE "SEND_MAIL" ( P_TO IN VARCHAR2, P_FROM IN VARCHAR2 DEFAULT <a href="mailto:'ljx@mail.com'">'ljx@mail.com'</a>, P_TEXT IN VARCHAR2 DEFAULT '', P_HTML IN VARCHAR2 DEFAULT '', P_SUBJECT IN VARCHAR2 DEFAULT 'ERP系统异常报告. '||TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss')) IS P_SMTP_HOSTNAME VARCHAR2(20):='lxj-mail.com'; P_SMTP_PORTNUM VARCHAR2(2):='25'; P_USER VARCHAR2(30) := '用户名'; -- 登录SMTP服务器的用户名 P_PASS VARCHAR2(30) := '密码'; -- 登录SMTP服务器的密码 L_BOUNDARY VARCHAR2(255) DEFAULT 'a1b2c3d4e3f2g1'; L_CONNECTION UTL_SMTP.CONNECTION; L_BODY_HTML CLOB := EMPTY_CLOB; --THIS LOB WILL BE THE EMAIL MESSAGE L_OFFSET NUMBER; L_AMMOUNT NUMBER; L_TEMP VARCHAR2(32767) DEFAULT NULL; BEGIN L_CONNECTION := UTL_SMTP.OPEN_CONNECTION( P_SMTP_HOSTNAME, P_SMTP_PORTNUM ); UTL_SMTP.HELO( L_CONNECTION,P_SMTP_HOSTNAME); /* SMTP服务器登录校验 */ UTL_SMTP.COMMAND(L_CONNECTION, 'AUTH LOGIN'); UTL_SMTP.COMMAND(L_CONNECTION, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(P_USER)))); UTL_SMTP.COMMAND(L_CONNECTION, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(P_PASS))));</div> <div> UTL_SMTP.MAIL( L_CONNECTION, P_FROM ); UTL_SMTP.RCPT( L_CONNECTION, P_TO ); L_TEMP := L_TEMP || 'MIME-Version: 1.0' || CHR(13) || CHR(10); L_TEMP := L_TEMP || 'To: ' || P_TO || CHR(13) || CHR(10); L_TEMP := L_TEMP || 'From: ' || P_FROM || CHR(13) || CHR(10); L_TEMP := L_TEMP || 'Subject: ' || P_SUBJECT || CHR(13) || CHR(10); L_TEMP := L_TEMP || 'Reply-To: ' || P_FROM || CHR(13) || CHR(10); L_TEMP := L_TEMP || 'Content-Type: multipart/alternative; boundary=' || CHR(34) || L_BOUNDARY || CHR(34) || CHR(13) || CHR(10); --CHR(34) IS " ---------------------------------------------------- -- Write the headers dbms_lob.createtemporary( l_body_html, false, 10 ); dbms_lob.write(l_body_html,length(l_temp),1,l_temp); </div> <div> ---------------------------------------------------- -- Write the text boundary l_offset := dbms_lob.getlength(l_body_html) + 1; l_temp := '--' || l_boundary || chr(13)||chr(10); l_temp := l_temp || 'content-type: text/plain; Charset=GB2312' || chr(13) || chr(10) || chr(13) || chr(10); dbms_lob.write(l_body_html,length(l_temp),l_offset,l_temp); ---------------------------------------------------- -- Write the plain text portion of the email l_offset := dbms_lob.getlength(l_body_html) + 1; dbms_lob.write(l_body_html,length(p_text),l_offset,p_text); ---------------------------------------------------- -- Write the HTML boundary l_temp := chr(13)||chr(10)||chr(13)||chr(10)||'--' || l_boundary || chr(13) || chr(10); l_temp := l_temp || 'content-type: text/html;' || chr(13) || chr(10) || chr(13) || chr(10); l_offset := dbms_lob.getlength(l_body_html) + 1; dbms_lob.write(l_body_html,length(l_temp),l_offset,l_temp); ---------------------------------------------------- -- Write the HTML portion of the message l_offset := dbms_lob.getlength(l_body_html) + 1; dbms_lob.write(l_body_html,length(p_html),l_offset,p_html); ---------------------------------------------------- -- Write the final html boundary l_temp := chr(13) || chr(10) || '--' || l_boundary || '--' || chr(13); l_offset := dbms_lob.getlength(l_body_html) + 1; dbms_lob.write(l_body_html,length(l_temp),l_offset,l_temp); </div> <div> ---------------------------------------------------- -- Send the email in 1900 byte chunks to UTL_SMTP l_offset := 1; l_ammount := 1900; utl_smtp.open_data(l_connection); while l_offset < dbms_lob.getlength(l_body_html) loop utl_smtp.write_raw_data(l_connection, UTL_RAW.CAST_TO_RAW(dbms_lob.substr(l_body_html,l_ammount,l_offset))); l_offset := l_offset + l_ammount ; l_ammount := least(1900,dbms_lob.getlength(l_body_html) - l_ammount); end loop; utl_smtp.close_data(l_connection); utl_smtp.quit( l_connection ); dbms_lob.freetemporary(l_body_html); end; / </div>
试试其它关键字
发送邮件
同语言下
.
查看某张表的表结构
.
oracle 集合操作
.
for 循环中倒序 用reverse
.
Oracle 临时表空间收缩
.
查看session及其对应运行的sql
.
Oracle常用查看表结构命令
.
Oracle Connect By Prior用法(实现递归查询)
.
重置排序 SEQUENCE
.
创建一个trigger
.
批量替换字段中的字符
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3