CREATE OR REPLACE PROCEDURE PRC_sendmail(p_receiver VARCHAR2, -- 邮件接收人                                          p_subject  VARCHAR2, -- 邮件标题                                          p_message  VARCHAR2 -- 邮件正文                                          ) IS   --下面四个变量请根据实际邮件服务器进行赋值   v_smtphost VARCHAR2(30) := 'smtp.qq.com'; --SMTP服务器地址(hotmail为smtp.live.com,测试未通过)   v_smtpport number(5) := 25; --smtp服务端口   v_user     VARCHAR2(30) := '45@qq.com'; --登录SMTP服务器的用户名   v_pass     VARCHAR2(20) := 'xiyuan'; --登录SMTP服务器的密码   v_sender   VARCHAR2(50) := '45@qq.com'; --发送者邮箱,一般与 ps_user 对应   v_conn     UTL_SMTP.connection; --到邮件服务器的连接   v_msg      varchar2(4000); --邮件内容

BEGIN

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

-- smtp服务器登录校验   UTL_SMTP.command(v_conn, 'AUTH LOGIN');   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, '<' || p_receiver || '>');

-- 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行   v_msg := 'Date:' || TO_CHAR(SYSDATE, 'yyyy mm dd hh24:mi:ss') ||            UTL_TCP.CRLF || 'From: ' || v_sender || '' || UTL_TCP.CRLF ||            'To: ' || p_receiver || '' || UTL_TCP.CRLF || 'Subject: ' ||            p_subject || UTL_TCP.CRLF || UTL_TCP.CRLF -- 这前面是报头信息            || p_message; -- 这个是邮件正文

--打开流   UTL_SMTP.open_data(v_conn);   --标题和内容都都可用中文                                     UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(v_msg));   --关闭流   UTL_SMTP.close_data(v_conn);   --关闭连接                                   UTL_SMTP.quit(v_conn);

EXCEPTION   WHEN OTHERS THEN     DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);     DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack);     UTL_SMTP.quit(v_conn);   END PRC_sendmail;

执行脚本:

SQL > exec PRC_sendmail(p_receiver => '751365252@qq.com', p_subject => 't张ttt', p_message => 'yy在yy');

oracle 邮件发送的更多相关文章

  1. 【Java EE 学习 21 下】【使用java实现邮件发送、邮件验证】

    一.邮件发送 1.邮件发送使用SMTP协议或者IMAP协议,这里使用SMTP协议演示. SMTP协议使用的端口号:25 rfc821详细记载了该协议的相关信息 (1)使用telnet发送邮件(使用12 ...

  2. java实现smtp邮件发送

    一.准备工作 首先你需要已一个发送邮箱,一般的邮箱都有SMTP.POP3服务,比如QQ邮箱,登陆QQ邮箱开启SMTP服务,开启是服务器会提示你设置独立密码,这个密码是跟邮箱正常登陆的密码不同的,这个是 ...

  3. PL/SQL 下邮件发送程序

    对DBA而言,尽管在os级别下发送邮件是轻而易举的事情,然而很多时候我们也需要在PL/SQL中来发送邮件,比如监控job的执行状况等.本文根据网友(源作者未考证)的代码将其改装并封装到了package ...

  4. JavaMail API 1.4.7邮件发送

    下载oracle javaMail API: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive- ...

  5. JavaMail邮件发送不成功的那些坑人情况及分析说明

    [我的Segmentfault原文]https://segmentfault.com/a/1190000008030346 前言   JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有 ...

  6. testng + reportng 测试结果邮件发送

    https://blog.csdn.net/qq744746842/article/details/51497506 其实大多数的时候我们的测试报告的发送可能都是结合Jenkins发送的,所以这方面更 ...

  7. Oracle邮件推送函数

    CREATE OR REPLACE PROCEDURE PROCSENDEMAIL ( P_TXT VARCHAR2, P_SUB VARCHAR2, P_SENDOR VARCHAR2, P_REC ...

  8. Java 基于JavaMail的邮件发送

    http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...

  9. Java Mail邮件发送的简单实现

    1.什么是java mail JAVA MAIL是利用现有的邮件账户发送邮件的工具,通过JAVA Mail的操控,让程序自动的使用设置的邮箱发送邮件. 这一机制被广泛的用在注册激活和垃圾邮件的发送等方 ...

随机推荐

  1. [非原创]eclipse中一些常见svn图标的含义

    项目视图   The Package Explorer view - 已忽略版本控制的文件.可以通过Window → Preferences → Team → Ignored Resources.来忽 ...

  2. UIPickerView控件中自定义展示的字体大小及样式

    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger) ...

  3. Linux下的网卡驱动程序的编写过程(转)

    工作需要写了我们公司一块网卡的linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微软垄断的强有力武器,日益受到大家的喜爱.真希望她能在中国迅速成长.把程序文档贴出来,希 ...

  4. STM32学习笔记——点亮LED

    STM32学习笔记——点亮LED 本人学习STM32是直接通过操作stm32的寄存器,使用的开发板是野火ISO-V2版本: 先简单的介绍一下stm32的GPIO: stm32的GPIO有多种模式: 1 ...

  5. Java JDK配置环境变量

    JDK的配置环境变量. 1.下载JDK,然后安装(点下一步). 2.右键单击  "计算机" ,选择  "属性".   3.单击 "高级系统设置&quo ...

  6. 转:各种Adapter的用法

    各种Adapter的用法   同样是一个ListView,可以用不同的Adapter让它显示出来,比如说最常用的ArrayAdapter,SimpleAdapter,SimpleCursorAdapt ...

  7. ViewPager和Fragment的结合使用fragment里包含着listview的常见问题

    在我们开发的过程中可能会遇到类似需求,我们需要做一个左右滑动的tab导航,这个时候有些朋友可能会想到viewpager和fragment的结合来实现这个功能:当然实现的方法不单单着一种.我们这个随笔讨 ...

  8. OpenGL变换

    概述 OpenGL变换矩阵 实例:GL_MODELVIEW矩阵 实例:GL_PROJECTION矩阵 概述 OpenGL管线中,在光栅化操作之前,包括顶点位置与法线向量的几何数据经顶点操作与图元装配操 ...

  9. Weblogic是瓦特?和JVM是瓦特关系?

    所谓固定内存60M是瓦特? 以下内容是个瓦特? “总内存大小=堆内存+非堆内存1200m:为堆内存大小,如果不指定后者参数则有最大数限制,网上很多文章认为这就是JVM内存,-Xmx为设置最大堆内存60 ...

  10. IOS零碎技术整理(1)-后台运行

    这两天做关于离线通知的功能,总结了一点关于这方面的注意点:按Home键回到桌面后程序很快被挂起,系统将关闭程序的Socket监听,此时程序将不能继续执行网络请求等操作. 两种方式可以使程序继续存活一段 ...