久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么在ORACLE中配置郵件服務器

139次閱讀
沒有評論

共計 3401 個字符,預計需要花費 9 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

怎么在 ORACLE 中配置郵件服務器?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

1 創建 ACL

BEGIN
 dbms_network_acl_admin.create_acl(acl =   email.xml ,
 DESCRIPTION =   Enables network permissions for the e-mail server ,
 principal =   C##ESD_MONITOR , -- 表示賦予哪個用戶   必須大寫
 is_grant =  TRUE,
 PRIVILEGE =   resolve ,
 start_date =  NULL,
 end_date =  NULL);
END;

2 賦予權限

begin
dbms_network_acl_admin.add_privilege(acl =   email.xml , -- 同上 xml 名稱
 principal =   C##ESD_MONITOR , -- 表示賦予哪個用戶   必須大寫
 is_grant =  TRUE,
 privilege =   connect , -- 權限名
 start_date =  null,
 end_date =  null);
end;

3 設置端口

begin
 dbms_network_acl_admin.assign_acl ( --  該段命令意思是允許訪問 acl 名為 utl_sendmail.xml 下授權的用戶,使用 oracle 網絡訪問包,所允許訪問的目的主機,及其端口范圍。 acl =   email.xml ,
 host =   * -- , -- ip 地址或者域名,填寫 http://localhost:9000/hello 與 http://localhost:9000/ 是會報 host 無效的
 --  且建議使用 ip 地址或者使用域名,若用 localhost,當 oracle 不是安裝在本機上的情況下,會出現問題
 -- lower_port =  9000, --  允許訪問的起始端口號
 -- upper_port =  Null --  允許訪問的截止端口號
 );
 end;

4 查詢權限設置情況

SELECT acl,
 principal,
 privilege,
 is_grant,
 TO_CHAR(start_date,  DD-MON-YYYY) AS start_date,
 TO_CHAR(end_date,  DD-MON-YYYY) AS end_date
 FROM dba_network_acl_privileges;

5 創建郵件發送存儲過程

create or replace procedure send_mail(p_recipient VARCHAR2, --  郵件接收人
 p_subject VARCHAR2, --  郵件標題
 p_message VARCHAR2, --  郵件正文
 p_type number -- 1 文本  2html
 ) as
 -- 下面四個變量請根據實際郵件服務器進行賦值
 v_mailhost VARCHAR2(30) :=  smtp.qq.com  --SMTP 服務器地址
 v_user VARCHAR2(30) :=  111@qq.com  -- 登錄 SMTP 服務器的用戶名
 v_pass VARCHAR2(20) :=  111  -- 登錄 SMTP 服務器的密碼   授權碼
 v_sender VARCHAR2(50) :=  111@qq.com  -- 發送者郵箱,一般與  ps_user  對應
 v_conn UTL_SMTP.connection; -- 到郵件服務器的連接
 v_msg varchar2(4000); -- 郵件內容
 BEGIN
 v_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 ||   -- 設置發件人   注:網上很多資料直接寫 v_sender,這樣寫會報 ORA-29279: SMTP 500 error
 UTL_SMTP.rcpt(v_conn,   || p_recipient ||   -- 設置收件人
 UTL_SMTP.open_data(v_conn); -- 打開流
 if p_type = 1 then
 --  創建要發送的郵件內容   注意報頭信息和郵件正文之間要空一行
 v_msg :=  Date:  || TO_CHAR(SYSDATE,  dd mon yy hh34: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.write_raw_data(v_conn, UTL_RAW.cast_to_raw(v_msg)); -- 這樣寫標題和內容都能用中文
 elsif p_type = 2 then
 UTL_SMTP.write_data(v_conn,
  From:  ||   || v_sender ||   || utl_tcp.CRLF);
 UTL_SMTP.write_data(v_conn,
  To:  ||   || p_recipient ||   ||
 utl_tcp.crlf);
 UTL_SMTP.write_raw_data(v_conn,
 UTL_RAW.cast_to_raw(convert( Subject:  ||
 p_subject ||
 utl_tcp.CRLF,
  ZHS16GBK )));
 UTL_SMTP.write_raw_data(v_conn,
 UTL_RAW.cast_to_raw(convert( Content-Type:text/html;charset=GBK  ||
 utl_tcp.CRLF,
  ZHS16GBK )));
 UTL_SMTP.write_data(v_conn, utl_tcp.CRLF);
 UTL_SMTP.write_raw_data(v_conn,
 UTL_RAW.cast_to_raw(convert(p_message,
  ZHS16GBK ))); -- 這樣寫標題和內容都能用中文
 end if;
 UTL_SMTP.close_data(v_conn); -- 關閉流
 UTL_SMTP.quit(v_conn); -- 關閉連接
 EXCEPTION
 WHEN OTHERS THEN
 DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);
 DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack);
 END;

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計3401字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 弋阳县| 清水县| 枞阳县| 浦县| 鄯善县| 东丽区| 农安县| 寻甸| 合作市| 大宁县| 岐山县| 社旗县| 泊头市| 兰州市| 化州市| 葫芦岛市| 安岳县| 瑞安市| 乐山市| 饶阳县| 霍林郭勒市| 汕尾市| 三门峡市| 斗六市| 唐海县| 清流县| 河南省| 望城县| 富平县| 乐都县| 昂仁县| 福贡县| 弥渡县| 沙坪坝区| 新丰县| 九江县| 奈曼旗| 册亨县| 西平县| 南宫市| 玉林市|