利用UTL_SMTP发送邮件

2024-04-01 13:08
文章标签 邮件 发送 smtp utl

本文主要是介绍利用UTL_SMTP发送邮件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近有空研究了一下用Oracle自带UTL_SMTP发送邮件的方法,标准步骤如下:

1.建立到SMTP Server的连接: UTL_SMTP.OPEN_CONNECTION
2.执行初始握手信号: UTL_SMTP.EHLO/HELO
2.5 设置SMTP服务器登录校验(看需要)
3.设置发件人: UTL_SMTP.MAIL
4.设置收件人: UTL_SMTP.RCPT
5.打开数据流: UTL_SMTP.OPEN_DATA
6.写邮件内容: UTL_SMTP.WRITE_RAW_DATA
包括
邮件的头部
Date: 2012 12 19 17:25:00||UTL_TCP.CRLF
From: 发件人||UTL_TCP.CRLF
To:收件人||UTL_TCP.CRLF
Subject:邮件主题|| UTL_TCP.CRLF || UTL_TCP.CRLF
邮件正文
7.关闭数据流: UTL_SMTP.CLOSE_DATA
8.退出连接: UTL_SMTP.QUIT

参考样例:

CREATE OR REPLACE PROCEDURE Send_Mail(p_Recipient VARCHAR2, -- 邮件接收人p_Subject   VARCHAR2, -- 邮件标题p_Message   VARCHAR2 -- 邮件正文) IS--下面四个变量请根据实际邮件服务器进行赋值v_Mailhost VARCHAR2(30) := 'mail.gxlu.com.cn'; --SMTP服务器地址v_User     VARCHAR2(30) := 'abc'; --登录SMTP服务器的用户名v_Pass     VARCHAR2(20) := '123456'; --登录SMTP服务器的密码v_Sender   VARCHAR2(50) := 'abc@gxlu.com.cn'; --发送者邮箱,一般与 ps_user 对应v_Conn     Utl_Smtp.Connection; --到邮件服务器的连接v_Msg      VARCHAR2(4000); --邮件内容
BEGINv_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'); -- smtp服务器登录校验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, 'yyyy mm dd hh24:mi:ss') || Utl_Tcp.Crlf || 'From: ' ||v_Sender || '' || Utl_Tcp.Crlf || 'To: ' || p_Recipient || '' || 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); --关闭连接
EXCEPTIONWHEN OTHERS THENDbms_Output.Put_Line(Dbms_Utility.Format_Error_Stack);Dbms_Output.Put_Line(Dbms_Utility.Format_Call_Stack);
END Send_Mail;

原文出自 http://blog.itpub.net/14854071/viewspace-752889/

这篇关于利用UTL_SMTP发送邮件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/867236

相关文章

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现