热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Oracle发送邮件存储过程

哎,每次都介绍,有啥好介绍的呢;好吧,版权完全是我的,转载要说明出处哦。无CREATEORREPLACEPROCEDURESEND_MAIL_one(as_recpinvarchar2,--邮件接收者as_subjectinvarchar2,--邮件标题as_msg_bodyinvarchar2)--邮件内容ISls_mailhostv

哎,每次都介绍,有啥好介绍的呢;好吧, 版权完全是我的,转载要说明出处哦。 无 CREATE OR REPLACE PROCEDURE SEND_MAIL_one(as_recp in varchar2, --邮件接收者 as_subject in varchar2, --邮件标题 as_msg_body in varchar2) --邮件内容 IS ls_mailhost v

哎,每次都介绍,有啥好介绍的呢;好吧, 版权完全是我的,转载要说明出处哦。 <无>
CREATE OR REPLACE PROCEDURE SEND_MAIL_one(as_recp     in varchar2, --邮件接收者
                                          as_subject  in varchar2, --邮件标题
                                          as_msg_body in varchar2) --邮件内容
 IS
  ls_mailhost  varchar2(30) := '192.168.0.1'; -- 邮件服务地址
  lc_mail_conn utl_smtp.connection;
  ls_subject   varchar2(100);
  ls_msg_body  varchar2(20000);
  --邮件服务器上发件人的帐号和密码
  ls_username  varchar2(256) := 'fajian@xxx.com';
  ls_password varchar2(256) := '123456';
BEGIN
  lc_mail_conn := utl_smtp.open_connection(ls_mailhost, 25);--在特定地址特定端口获得链接
  utl_smtp.helo(lc_mail_conn, ls_mailhost);
  utl_smtp.command(lc_mail_conn, 'AUTH LOGIN');
  utl_smtp.command(lc_mail_conn,
                   demo_base64.encode(utl_raw.cast_to_raw(ls_username)));
  utl_smtp.command(lc_mail_conn,
                   demo_base64.encode(utl_raw.cast_to_raw(ls_password)));
  ls_subject  := 'Subject: [' || upper(sys_context('userenv', 'db_name')) ||
                 '] - ' || convert(as_subject, 'ZHS16GBK', 'AL32UTF8');
  ls_msg_body := convert(as_msg_body, 'ZHS16GBK', 'AL32UTF8');

  utl_smtp.mail(lc_mail_conn, '<' || '发件人sxgkwei' || '>'); 
  utl_smtp.rcpt(lc_mail_conn, '<' || as_recp || '>'); 
  utl_smtp.open_data(lc_mail_conn);

  ls_msg_body := 'From: ' || '发件人sxgkwei' || chr(13) || chr(10) ||
                 'To: ' || as_recp || chr(13) || chr(10) || ls_subject ||
                 chr(13) || chr(10) || chr(13) || chr(10) || ls_msg_body;

  utl_smtp.write_raw_data(lc_mail_conn, utl_raw.cast_to_raw(ls_msg_body));

  utl_smtp.close_data(lc_mail_conn);
  utl_smtp.quit(lc_mail_conn);
EXCEPTION
  WHEN UTL_SMTP.INVALID_OPERATION THEN
    dbms_output.put_line('invalid operation');
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
    dbms_output.put_line('transient error');
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
    dbms_output.put_line('permanent error');
  
  WHEN OTHERS THEN
    dbms_output.put_line('others');
end SEND_MAIL_one;
CREATE OR REPLACE PROCEDURE SEND_MAIL(as_recp in varchar2, --邮件接收者,多接收者可用';'号分隔
                                      
                                      as_subject  in varchar2, --邮件标题
                                      as_msg_body in varchar2) --邮件内容
 IS
  type myArr is table of varchar2(500) index by binary_integer;
  i           number;
  l_idx       number;
  recp        varchar2(500);
  as_recp_arr myArr;
BEGIN
  recp  := as_recp;
  i     := 1;
  l_idx := instr(recp, ';');

  while l_idx > 0 loop
    as_recp_arr(i) := substr(recp, 1, l_idx - 1);
    recp := substr(recp, l_idx + 1);
    i := i + 1;
    l_idx := instr(recp, ';');
  end loop;

  if length(recp) > 1 then
    as_recp_arr(i) := recp;
  end if;

  for i in 1 .. as_recp_arr.count loop
    SEND_MAIL_one(as_recp_arr(i), as_subject, as_msg_body);
  end loop;
end send_mail;

推荐阅读
  • 在Windows Server 2008 R2上配置IIS FTP服务
    本文详细介绍了如何在Windows Server 2008 R2操作系统上通过IIS配置FTP服务的过程,包括服务器角色的选择与安装、FTP站点的创建以及必要的服务和防火墙设置检查。 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 2023年最佳PHP开发学习路径推荐
    本文详细探讨了针对不同背景的学习者如何选择最适合自己的PHP开发学习资源,包括书籍、在线课程及培训机构的推荐。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • 深入解析SSL Strip攻击机制
    本文详细介绍了SSL Strip(一种网络攻击形式)的工作原理及其对网络安全的影响。通过分析SSL与HTTPS的基本概念,探讨了SSL Strip如何利用某些网站的安全配置不足,实现中间人攻击,以及如何防范此类攻击。 ... [详细]
  • 使用LVS与ldirectord实现高可用负载均衡
    本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ... [详细]
  • 本文详细探讨了 JMS (Java Message Service) 中创建会话(session)时使用的 createSession 方法的两个参数 paramA 和 paramB 的不同组合方式及其具体含义,特别是它们如何影响事务处理和消息确认模式。 ... [详细]
  • 深入解析MySQL查询优化:特定类型查询的高级策略
    本文详细探讨了MySQL中特定类型查询的优化方法,包括COUNT()查询、关联查询、LIMIT分页及UNION查询的优化技巧,旨在提高数据库查询效率。 ... [详细]
  • MySQL性能测试标准倡议:老叶提出的压测基准
    进行MySQL的压力测试通常是为了评估新旧版本之间的性能差异、验证硬件升级的效果、测试参数调整的影响以及评估新业务的负载承受能力。老叶提出了一个MySQL压力测试基准值倡议,旨在促进行业内的标准化和成果共享。 ... [详细]
  • APM(Application Performance Management,应用性能管理)对于提供互联网服务的企业至关重要。本文将深入探讨APM如何帮助识别和解决导致用户流失的技术问题,以及它在提升整体用户体验方面的作用。 ... [详细]
  • Redis安全防护深入解析
    本文详细探讨了如何通过指令安全、端口管理和SSL代理等措施有效保护Redis服务的安全性。 ... [详细]
  • JavaWeb技术架构解析
    本文探讨了JavaWeb开发中客户端与服务器端的交互模式,重点分析了B/S(浏览器/服务器)和C/S(客户端/服务器)两种架构的特点及应用场景。 ... [详细]
author-avatar
彬哥唔系我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有