


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle提供了UTL_SMTP包,可以发送EMAIL。写了一个很简单的小例子:DECLAREMAIL_CONN UTL_SMTP.CONNECTION;BEGINMAIL_CONN := UTL_SMTP.OPEN_CONNECTION(, 25);UTL_SMTP.HELO(MAIL_CONN, );UTL_SMTP.COMMAND(MAIL_CONN, AUTH LOGIN);UTL_SMTP.COMMAND(MAIL_CONN, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW();UTL_SMTP.COMMAND(MAIL_CONN, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(password);UTL_SMTP.MAIL(MAIL_CONN, );UTL_SMTP.RCPT(MAIL_CONN, );UTL_SMTP.DATA(MAIL_CONN, TEST);UTL_SMTP.QUIT(MAIL_CONN);END;PL/SQL 过程已成功完成。就这么一个简单的不能在简单的过程,居然花了N个小时才搞定。首先打开一个SMTP连接,输入一个邮件服务器的地址,注意如果邮件服务器地址不正确会出现类似这样的错误:第 1 行出现错误:ORA-29278: SMTP 临时性错误: 421 Service not availableORA-06512: 在 SYS.UTL_SMTP, line 21ORA-06512: 在 SYS.UTL_SMTP, line 97ORA-06512: 在 SYS.UTL_SMTP, line 139ORA-06512: 在 line 4随后输入的分别是用户名和密码。其实本来打算用UTL_MAIL包实现发邮件的功能,使用UTL_MAIL包基本上一行代码就可以了,但是现在几乎所有的邮件服务器都要求授权验证,因此只能使用UTL_SMTP包来实现,注意如果用户名、密码出现错误,则会报错:第 1 行出现错误:ORA-29279: SMTP 永久性错误: 535 authorization failed (#5.7.0)ORA-06512: 在 SYS.UTL_SMTP, line 21ORA-06512: 在 SYS.UTL_SMTP, line 99ORA-06512: 在 SYS.UTL_SMTP, line 159ORA-06512: 在 line 8如果没有将用户名密码进行编码就直接发送,会碰到下面的错误:第 1 行出现错误:ORA-29279: SMTP 永久性错误: 501 malformed auth input (#5.5.4)ORA-06512: 在 SYS.UTL_SMTP, line 21ORA-06512: 在 SYS.UTL_SMTP, line 99ORA-06512: 在 SYS.UTL_SMTP, line 159ORA-06512: 在 line 7如果没有设置用户名、密码,或者使用UTL_MAIL包连接到需要授权验证的邮件服务器,则会报错如下:第 1 行出现错误:ORA-29279: SMTP 永久性错误: 554 auth login firstORA-06512: 在 SYS.UTL_SMTP, line 21ORA-06512: 在 SYS.UTL_SMTP, line 99ORA-06512: 在 SYS.UTL_SMTP, line 241ORA-06512: 在 SYS.UTL_MAIL, line 424ORA-06512: 在 SYS.UTL_MAIL, line 594ORA-06512: 在 line 2CREATE OR REPLACE PROCEDURE send_mail(p_recipient VARCHAR2, - 邮件接收人p_subject VARCHAR2, - 邮件标题p_message VARCHAR2 - 邮件正文)IS-下面四个变量请根据实际邮件服务器进行赋值v_mailhost VARCHAR2(30) := ; -SMTP服务器地址v_user VARCHAR2(30) := username; -登录SMTP服务器的用户名v_pass VARCHAR2(20) := password; -登录SMTP服务器的密码v_sender VARCHAR2(50) := email; -发送者邮箱,一般与 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司吸尘器管理制度
- 冷库压缩机管理制度
- 厂家办事处管理制度
- 品牌灯饰店管理制度
- 大公司考勤管理制度
- 民工生活区管理制度
- 汽车目视化管理制度
- 波司登工厂管理制度
- 流动孕产妇管理制度
- 流程化会务管理制度
- 江苏省南京2022年中考历史试卷(解析版)
- 《老年人认知记忆训练》课件
- 一年级家长会课件2024-2025学年
- 沪教版八年级化学(下册)期末试卷及答案
- 2024年广东省中考生物+地理试卷(含答案)
- DL-T5796-2019水电工程边坡安全监测技术规范
- 一年级下-科学-非纸笔测试
- 上海地理会考复习
- 小学数学一年级《求一个数比另一个数多几、少几》说课稿
- 外资星级酒店客房清洁卫生细节量化检查表
- 钢管悬挑式脚手架施工方案
评论
0/150
提交评论