日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实例讲解如何通过Oracle成功发送邮件-入门基础

發(fā)布時(shí)間:2024/8/26 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实例讲解如何通过Oracle成功发送邮件-入门基础 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

LINUX AS3+Oracle 9.2||10.20.1從Oracle成功發(fā)送郵件:

??? 示例如下:


??? 具體的測(cè)試環(huán)境:LINUX AS3 , Oracle 9.0.2.4

??? SQL> select * from v$version;


??? BANNER

??? ----------------------------------------------------------------

??? Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

??? PL/SQL Release 9.2.0.4.0 - Production

??? CORE 9.2.0.3.0 Production

??? TNS for Linux: Version 9.2.0.4.0 - Production

??? NLSRTL Version 9.2.0.4.0 - Production


??? SQL> select * from v$version;

??? Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

??? PL/SQL Release 10.2.0.1.0 - Production

??? CORE 10.2.0.1.0 Production

??? TNS for Linux: Version 10.2.0.1.0 - Production

??? NLSRTL Version 10.2.0.1.0 - Production


??? MAIL服務(wù)器為WIN2003,WINMAIL


??? 1.保證ORACLE服務(wù)器到MAIL服務(wù)器網(wǎng)絡(luò)暢通,25端口打開


??? 2.創(chuàng)建發(fā)送郵件的procedure如下:

??? ---------------------------------------

??? CREATE OR REPLACE PROCEDURE SEND_MAIL

??? (as_sender in varchar2, --郵件發(fā)送者

??? as_recp in varchar2, --郵件接收者

??? as_subject in varchar2, --郵件標(biāo)題

??? as_msg_body in varchar2) --郵件內(nèi)容

??? IS

??? ls_mailhost varchar2(30) := 'mail server'; -- address or IP

??? lc_mail_conn utl_smtp.connection;

??? ls_subject varchar2(100);

??? ls_msg_body varchar2(20000);

??? ls_username varchar2(256) := 'usercode';

??? ls_password varchar2(256) := 'password';

??? 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')) || '] - ' || as_subject;

??? ls_msg_body := as_msg_body;

??? utl_smtp.mail(lc_mail_conn, '<'||as_sender||'>'); --這里的'<' 一定要寫,不然會(huì)出現(xiàn)permanent error

??? utl_smtp.rcpt(lc_mail_conn, '<'||as_recp||'>');--這里的'<' 一定要寫,不然會(huì)出現(xiàn)permanent error

??? utl_smtp.open_data(lc_mail_conn);

??? ls_msg_body := 'From: ' || as_sender || 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)); --這樣寫subject可以支持中文但body內(nèi)容不支持中文;

??? -- utl_smtp.write_data(lc_mail_conn, ls_msg_body); --這樣寫subject不支持中文

??? 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;


??? 3.執(zhí)行發(fā)送郵件:

??? exec send_mail('heyu@163.net','admin@163.net','我我','this is a oracle test mail');

?

??? 注意事項(xiàng):上面的過程如果在編譯中出現(xiàn)demo_base64.encode must be declared,請(qǐng)大家創(chuàng)建下面的包和包體;

??? ---------------------------------

??? CREATE OR REPLACE PACKAGE demo_base64 IS


??? -- Base64-encode a piece of binary data.

??? --

??? -- Note that this encode function does not split the encoded text into

??? -- multiple lines with no more than 76 bytes each as required by

??? -- the MIME standard.

?

文章轉(zhuǎn)載自網(wǎng)管之家:http://www.bitscn.com/pdb/oracle/200804/137713.html

?

總結(jié)

以上是生活随笔為你收集整理的实例讲解如何通过Oracle成功发送邮件-入门基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。