广告
返回顶部
首页 > 资讯 > 数据库 >Oracle邮件发送
  • 316
分享到

Oracle邮件发送

2024-04-02 19:04:59 316人浏览 泡泡鱼
摘要

10G之前,如果要从oracle中发送email,必须借助oracle的utl_smtp和utl_tcp功能包,自己包装一个email发送程序,然后使用。自从10G后,这个流程将变得非常简单。因为ora

10G之前,如果要从oracle中发送email,必须借助oracle的utl_smtp和utl_tcp功能包,自己包装一个email发送程序,然后使用。自从10G后,这个流程将变得非常简单。因为oracle给我们提供了一个utl_mail包,我们可以直接调用发送email。其实这个包底层也是调用了utl_smtp、utl_tcp的相关api。 不过utl_mail只能用于无安全验证的smtp服务器。如果smtp服务器需要安全验证,只能用utl_smtp来实现。

 

1、确定是否安装了utl_mail,如果没有用下面的语句安装utl_mail

 

@%ORACLE_HOME%\rdbms\admin\utlmail.sql

@%ORACLE_HOME%\rdbms\admin\prvtmail.plb

 

2、设置smtp_out_server参数

 

10g中oracle新增加了这个参数用来定义smtp服务器。如果该参数没有设置,oracle会自动解析db_domain 参数,用域名来实现mail的发送,没有db_domain也没有设置,那么mail将不会成功发送。建议设置smtp_out_server参数:

alter system set smtp_out_server = 'smtp.chengmail.cn';

 

如果要同时设置多个smtp服务器,可以将各个服务器用逗号隔开:

alter system set smtp_out_server = 'smtp.chengmail.cn, mail.a.com';

 

上面的域名也可以用ip来代替,oracle默认会使用25端口来发送,也可以手动指定具体的端口:

alter system set smtp_out_server = 'smtp.chengmail.cn:25, mail.a.com:25';

 

3、测试邮件发送

 

目前utl_mail提供了三个发送邮件的过程

 

PROCEDURE SEND

参数名称                       类型                    输入/输出默认值?

------------------------------ ----------------------- ------ --------

 SENDER                         VARCHAR2                IN

 RECIPIENTS                     VARCHAR2                IN

 CC                             VARCHAR2                IN     DEFAULT

 BCC                            VARCHAR2                IN     DEFAULT

 SUBJECT                        VARCHAR2                IN     DEFAULT

 MESSAGE                        VARCHAR2                IN     DEFAULT

 MIME_TYPE                      VARCHAR2                IN     DEFAULT

 PRioRITY                       BINARY_INTEGER          IN     DEFAULT

 REPLYTO                        VARCHAR2                IN     DEFAULT

 

PROCEDURE SEND_ATTACH_RAW

参数名称                       类型                    输入/输出默认值?

------------------------------ ----------------------- ------ --------

 SENDER                         VARCHAR2                IN

 RECIPIENTS                     VARCHAR2                IN

 CC                             VARCHAR2                IN     DEFAULT

 BCC                            VARCHAR2                IN     DEFAULT

 SUBJECT                        VARCHAR2                IN     DEFAULT

 MESSAGE                        VARCHAR2                IN     DEFAULT

 MIME_TYPE                      VARCHAR2                IN     DEFAULT

 PRIORITY                       BINARY_INTEGER          IN     DEFAULT

 ATTACHMENT                     RAW                     IN

 ATT_INLINE                     BOOLEAN                 IN     DEFAULT

 ATT_MIME_TYPE                  VARCHAR2                IN     DEFAULT

 ATT_FILENAME                   VARCHAR2                IN     DEFAULT

 REPLYTO                        VARCHAR2                IN     DEFAULT

 

PROCEDURE SEND_ATTACH_VARCHAR2

参数名称                       类型                    输入/输出默认值?

------------------------------ ----------------------- ------ --------

 SENDER                         VARCHAR2                IN

 RECIPIENTS                     VARCHAR2                IN

 CC                             VARCHAR2                IN     DEFAULT

 BCC                            VARCHAR2                IN     DEFAULT

 SUBJECT                        VARCHAR2                IN     DEFAULT

 MESSAGE                        VARCHAR2                IN     DEFAULT

 MIME_TYPE                      VARCHAR2                IN     DEFAULT

 PRIORITY                       BINARY_INTEGER          IN     DEFAULT

 ATTACHMENT                     VARCHAR2                IN

 ATT_INLINE                     BOOLEAN                 IN     DEFAULT

 ATT_MIME_TYPE                  VARCHAR2                IN     DEFAULT

 ATT_FILENAME                   VARCHAR2                IN     DEFAULT

 REPLYTO                        VARCHAR2                IN     DEFAULT

 

创建存放附件的目录:

create directory export as '/oracle/product/dump_dir';

grant read, write on directory export to public;

 

没有附件的邮件发送示例:

begin

 utl_mail.send(sender => 'oracle@scmdbserver',

               recipients => 'ypma@ique.com',

               subject => 'oracle email test',

               cc => 'gsun@ique.com, pzhang@ique.com',

               message => 'sender ok?');

end;

/

 

带附件的邮件发送(基于文本的附件),如要要发送二进制附件,可以使用utl_mail.send_attach_raw过程:

DECLARE

    fHandle utl_file.file_type;

    vTextOut varchar2(32000);

    text varchar2(32000);

BEGIN

    fHandle := UTL_FILE.FOPEN('EXPORT', 'a.log', 'r');

    IF UTL_FILE.IS_OPEN(fHandle) THEN

      DBMS_OUTPUT.PUT_LINE('File read open');

    ELSE

     DBMS_OUTPUT.PUT_LINE('File read not open');

    END IF;

    LOOP

     begin

        UTL_FILE.GET_LINE(fHandle, vTextOut);

        text := text||vTextOut;

     EXCEPTION

        WHEN NO_DATA_FOUND THEN EXIT;

     end;

     END LOOP;

   UTL_FILE.FCLOSE(fHandle);

   utl_mail.send_attach_varchar2(sender => 'oracle@scmdbserver',

                                 recipients => 'ypma@ique.com',

                                 subject => 'oracle email test',

                                 cc => 'gsun@ique.com, pzhang@ique.com',

                                 message => 'sender ok?',

                                 attachment => text,

                                 att_filename => 'a.log');

END;

/

 

oracle在send_attach_varchar2中附件内容用varchar2来存储,也就是说附件不能大于32k。send_attach_raw不能发送超过2000字节的附件。

您可能感兴趣的文档:

--结束END--

本文标题: Oracle邮件发送

本文链接: https://www.lsjlt.com/news/48934.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle邮件发送
    10G之前,如果要从oracle中发送email,必须借助oracle的utl_smtp和utl_tcp功能包,自己包装一个email发送程序,然后使用。自从10G后,这个流程将变得非常简单。因为ora...
    99+
    2022-10-18
  • Oracle发送邮件存储过程
    发送邮件的存储过程 CREATE OR REPLACE PROCEDURE Up_send_mail(subject in va...
    99+
    2022-10-18
  • python发送、抄送邮件
    python发送抄送邮件 sendemial.py #!/usr/bin/python # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMETe...
    99+
    2023-01-31
    邮件 python
  • email.py 邮件发送
    1 import smtplib 2 from email.mime.text import MIMEText 3 msg = MIMEText('发送内容,自行编辑','plain','utf-8') 4 from_addr...
    99+
    2023-01-30
    邮件发送 email py
  • python发送邮件
    python通过smtp发送qq邮件 import smtplib from email.mime.text import MIMEText from email.header import Header """ 1》测试邮件发送 ...
    99+
    2023-01-30
    发送邮件 python
  • python 邮件发送
    环境:python2.7 1 #coding:utf-8 2 from __future__ import unicode_literals 3 __author__ = 'crista' 4 5 import smtpli...
    99+
    2023-01-30
    邮件发送 python
  • python 发送邮件
    #!/usr/bin/env python#coding:utf-8 import smtplib,time,stringfrom email.mime.text import MIMEText SMTPserver = 'smtp.exm...
    99+
    2023-01-31
    发送邮件 python
  • python3发送邮件
    #163邮箱发送邮件import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr my_sender = 'XXXXX@163.c...
    99+
    2023-01-31
    发送邮件
  • Django——邮件发送
    在settings中添加关键信息 EMAIL_HOST = 'smtp.qq.com' #不同的邮箱有不同的发件地址(收件地址) EMAIL_PORT = 25 #smtp端口号 EMAIL_HOST_USER = '邮箱' #发件人...
    99+
    2023-01-30
    邮件发送 Django
  • PHP 发送邮件
    在php网站开发中,发送电子邮件是一个非常普片的需求。比如网站注册功能,当用户注册完成后需要发送电子邮件给用户,提示用户注册成功或者发送验证链接,另外,用户修改账号密码也需要发送电子邮件。 本文章向大家介绍php发送邮件的两种方法: 使用p...
    99+
    2023-08-31
    php 开发语言 servlet
  • python SMTP邮件发送
    本例使用的时python2.7环境,python3的操作应该也是差不多的。 需要用到smtplib和email两个包。 发送文本类型的邮件 下面看个发送文本邮件的例子(使用网易163的SMTP): # -*- coding: UTF-8 ...
    99+
    2023-01-31
    邮件发送 python SMTP
  • sql server 发送邮件
    -- BI EMAIL declare @CC varchar(10),@MAIL varchar(500), @str varchar(800),@year varchar(4),@month va...
    99+
    2021-11-11
    sql server 发送邮件
  • python3之发送邮件
    #/usr/bin/env python3 # encoding: utf-8 #@author: Lejie #@software: PyCharm Community Edition #@file: learn_smtp.py #@ti...
    99+
    2023-01-31
    发送邮件
  • PHP实现发送邮件功能代码|PHP怎么实现QQ邮件发送|Php发送邮件代码
    最近学习PHP的过程中发现了一个很实用的功能那就是发送QQ邮件,因为这个功能很常用我也是研究了半天找到一个很好的demo感兴趣的可以自己下载学习一下这个Php发送邮件代码真的很实用而且很好用 使用方法: 上传整体压缩包到服务器解压 修改se...
    99+
    2023-09-16
    php 服务器 apache
  • Python3:用QQ邮箱发送邮件
    1.     环境操作系统 Win10 IDE PyCharm Community 2018.1 Python 3.5   2.     设置QQ邮箱    QQ邮箱是SSL认证的邮箱系统,要用QQ邮箱发送邮件,需要开启POP3/ SM...
    99+
    2023-01-31
    发送邮件 邮箱 QQ
  • python发送邮件和附件
    发送邮件的时候,需要发送人,收件人,和一台邮件服务器,这里使用python发送一个邮件,主要需要引入smtplib和email库。下面是源码,粘贴即可用: #!/usr/bin/env python3 # coding: utf-8 imp...
    99+
    2023-01-31
    发送邮件 附件 python
  • python 发送中文邮件
    #!/usr/bin/python#coding:utf-8#导入smtplib和MIMEText import smtplibfrom email.Header import Headerfrom email.MIMEText impor...
    99+
    2023-01-31
    中文 邮件 python
  • Python实现邮件发送
    使用smtplib模块发送邮件,它对smtp协议进行了简单的封装。smtp协议的基本命令包括:    HELO 向服务器标识用户身份    MAIL 初始化邮件传输 mail from:    RCPT 标识单个的邮件接收人;常在MAIL命...
    99+
    2023-01-31
    邮件发送 Python
  • Javaweb实现邮件发送
    本文实例为大家分享了Javaweb实现邮件发送的具体代码,供大家参考,具体内容如下 发送邮件使用的是SMTP协议:一般是smtp.xxx.com ,比如smtp.qq.com 接收邮...
    99+
    2022-11-13
  • python3 发送电子邮件
    使用python3发送电子邮件,我之前在网上找了好几篇文章不论是都不行,最后在网上找到这篇文章了!首先在163邮箱开启授权码记住这个授权密码,我们在python代码里面用的就是这个密码不然会出现这个报错#!/usr/bin/env pyth...
    99+
    2023-01-31
    发送电子邮件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作