Oracle PLSQL通过SMTP发送E-MAIL邮件代码

登录到SMTPserver发送邮件,支持HTML

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

      --以下四个变量请依据实际邮件server进行赋值
      v_mailhost VARCHAR2(30) := ‘smtp.163.com‘; --SMTPserver地址
      v_user     VARCHAR2(30) := ‘[email protected]‘; --登录SMTPserver的username
      v_pass     VARCHAR2(20) := ‘System123‘; --登录SMTPserver的password
      v_sender   VARCHAR2(50) := ‘[email protected]‘; --发送者邮箱。一般与 ps_user 相应

      v_conn  UTL_SMTP. connection ; --到邮件server的连接
      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‘ );   -- smtpserver登录校验
      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_recipient);  --设置收件人

      -- 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行
      v_msg := ‘Date:‘ || TO_CHAR(SYSDATE, ‘dd mon yy hh24:mi:ss‘ )
          || UTL_TCP.CRLF || ‘From: ‘ || ‘<‘ || v_sender || ‘>‘
          || UTL_TCP.CRLF || ‘To: ‘ || ‘<‘ || p_recipient || ‘>‘
          || UTL_TCP.CRLF || ‘Subject: ‘ || p_subject
          || UTL_TCP.CRLF || ‘Content-Type:text/html;charset=GBK‘
          || 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(convert(v_msg,‘ZHS16GBK‘))); --这样写标题和内容都能用中文
      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);

 END send_mail;
时间: 2024-12-06 11:58:39

Oracle PLSQL通过SMTP发送E-MAIL邮件代码的相关文章

python3.x下 smtp发送html邮件和附件

综合网络上的文章以及自己的实验,在python的IDEL下成功的通过SMTP发送出去了邮件.现将过程记录如下: 一.准备工作: 1.安装好python3.x 2.拥有一个支持smtp服务的邮箱,我是用的126的邮箱 网易和腾讯的邮箱的密码现在都变为授权码登录.需要搜集这些信息:SMTP服务器地址,你的邮箱账号,授权码. 二.思路 发送HTML和带附件的邮件,我们要用到先把html文件组合到一起,做为一个整体.可以理解为作为一个邮包.然后通过SMTP协议传输出去.这个SMTP是传输协议.那么我们用

.Net Mail SMTP 发送网络邮件

刚刚迈入"开发"的行列 一直有一个想法 我什么时候能给我庞大的用户信息数据库给每一位用户邮箱发送推荐信息呢? 刚迈入"编程两个月的时间" 我采用 SMTP 发送网络邮件 ,先上常用的邮件服务器 在上代码 /**********************************这里是邮件服务器名 POP3 协议使用POP地址 SMTP 使用SMTP*****************************************/ gmail(google.com) P

java通过SMTP发送QQ邮件(参考自龙果学院)

java通过SMTP发送QQ邮件编辑 个人邮箱开通SMTP服务(进入个人邮箱,点击设置–>账户):  点击了账户后,往下拉可以看到SMTP服务选项,默认情况下这个选项是不开启的.点击开启腾讯会进行身份验证,身份验证通过以后,会收到一个用于使用SMTP的16位口令,验证身份的过程中把收到的口令保存下来,因为后面要使用SMTP功能必须要用到这个口令.  具体实现代码:     public static void main(String args[]) {        // 邮件内容       

使用本地mail发送外网邮件

有的时候需要使用本地的mail,来对外网发送邮件,需要定制mail的smtp服务器. bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的 资源占用.而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的: 修改/etc/mail.rc set [email protected] smtp=smtp.domain.com set smtp-auth

java mail 邮件发送实例【搬】

说明:转自国外博客:欢迎查阅原作 该实例较新,简明易懂,值得新手借鉴 以gmail为例,注意: 1.通过TLS方式发送 1 package com.mkyong.common; 2 3 import java.util.Properties; 4 5 import javax.mail.Message; 6 import javax.mail.MessagingException; 7 import javax.mail.PasswordAuthentication; 8 import java

利用SMTP发送Mail详解

利用SMTP发送Mail详解 分类: VC++程式开发 技术杂谈 2010-01-09 11:02 4135人阅读 评论(0) 收藏 举报 服务器headerdatesocket网络2010 在以前接触的项目中,一直都是在做网站时用到了发送mail 的功能,在asp 和.net 中都有相关的发送mail 的类, 实现起来非常简单.最近这段时间因工作需要在C++ 中使用发送mail 的功能,上网搜了一大堆资料,终于得以实现,总结自己开发过程中碰到的一些问题,希望对需的人有所帮助, 由于能力有限,

PHP+socket+SMTP、POP3协议发送、接收邮件

1.实现SMTP协议的类dsmtp.cls.php: <?php          // 通过socket实现SMTP协议的功能// version: 1.1// author : DCC// create : 2014-01-17 23:38:24// modify : 2014-01-18 16:59:04// more   : http://www.thinkful.cn/archives/389.html          class Dmail_smtp{               

java mail邮件发送(带附件) 支持SSL

java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.util.Vector; public class MailSenderInfo { // 发送邮件的server的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址 pr

java mail邮件发送(带附件)

java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.util.Vector; public class MailSenderInfo { // 发送邮件的服务器的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址 priva