欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Oracle 11g 環(huán)境,使用utl_smtp創(chuàng)建一個(gè)存儲(chǔ)過(guò)

系統(tǒng) 2097 0

太多的在線電子郵件存儲(chǔ)過(guò)程。我不轉(zhuǎn)發(fā),弄個(gè)作為一個(gè)簡(jiǎn)單的例子演示。

      create or replace procedure Send_mail(mail_body varchar2) is
  smtp_conn  utl_smtp.connection;
  user_name  varchar2(20) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('username@email.com'))); 
  user_paswd varchar2(20) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('password')));
  lv_mail_header varchar2(200):='From:username@email.com'||utl_tcp.CRLF||
                                'To:sanoul@email.com'||utl_tcp.CRLF||
                                'Subject:Oracle數(shù)據(jù)庫(kù)'||utl_tcp.CRLF;
  lv_mail_content varchar2(2000);
begin
  lv_mail_content := utl_tcp.CRLF||mail_body;  

  smtp_conn := utl_smtp.open_connection('smtp.email.com',25);
  utl_smtp.helo(smtp_conn,'smtp.email.com');
  utl_smtp.command(smtp_conn,'AUTH LOGIN');
  utl_smtp.command(smtp_conn,user_name); --郵件用戶名
  utl_smtp.command(smtp_conn,user_paswd); --郵件密碼
  utl_smtp.mail(smtp_conn,'<username@email.com>'); --發(fā)件人郵箱
  utl_smtp.rcpt(smtp_conn,'<sanoul@email.com>'); --收件人郵箱

  utl_smtp.open_data(smtp_conn);

  utl_smtp.write_raw_data(smtp_conn,utl_raw.cast_to_raw(lv_mail_header));
  utl_smtp.write_raw_data(smtp_conn,utl_raw.cast_to_raw(lv_mail_content));
  --順便說(shuō)一句utl_raw.cast_to_raw最大長(zhǎng)度是16383,假設(shè)你的郵件正文超大,請(qǐng)循環(huán)插入正文write_raw_data
  --否則肯定會(huì)得到 ORA-06502: PL/SQL: 數(shù)字或值錯(cuò)誤

  utl_smtp.close_data(smtp_conn);
  utl_smtp.quit(smtp_conn);
exception
  when others then
    utl_smtp.quit(smtp_conn);
end Send_mail;
/

--儲(chǔ)存過(guò)程已創(chuàng)建
    

第二步直接測(cè)試函數(shù);

      begin
  send_mail('測(cè)試內(nèi)容');
end;
/

ORA-29278: SMTP 暫時(shí)性錯(cuò)誤: 421 Service not available
ORA-06512: 在 "SYS.UTL_SMTP", line 21
ORA-06512: 在 "SYS.UTL_SMTP", line 97
ORA-06512: 在 "SYS.UTL_SMTP", line 139
ORA-06512: 在 "SYS.UTL_MAIL", line 405
ORA-06512: 在 "SYS.UTL_MAIL", line 594
ORA-06512: 在 line 2
    

話說(shuō)我第一次看到這個(gè)錯(cuò)誤很震驚,由于整個(gè)郵件發(fā)送的存儲(chǔ)過(guò)程是先用PL/SQL直接測(cè)試代碼后,再封裝到存儲(chǔ)過(guò)程中的。后來(lái)經(jīng)過(guò)搜索才知道為了更仔細(xì)地控制網(wǎng)絡(luò)權(quán)限,Oracle 11g中針對(duì)UTL_TCP。 UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR的訪問(wèn)設(shè)置了單獨(dú)的權(quán)限訪問(wèn)控制方式(ACL).

OK,第三步。設(shè)置ACL;

      --ACL第一步。創(chuàng)建
BEGIN  
        dbms_network_acl_admin.create_acl(acl         => 'httprequestpermission.xml',  --文件名稱,能夠隨意取名
                                          DESCRIPTION => 'Normal Access',  
                                          principal   => 'CONNECT',  --角色
                                          is_grant    => TRUE,  
                                          PRIVILEGE   => 'connect',  
                                          start_date  => NULL,  
                                          end_date    => NULL);  
END;  
/

commit; --必需要提交;

    

然后檢查是否創(chuàng)建了該 ACL控制文件;

      SQL> SELECT any_path FROM resource_view WHERE any_path like '/sys/acls/%.xml';
    

假設(shè)列表里出現(xiàn)剛才創(chuàng)建的文件 httprequestpermission.xml ,請(qǐng)繼續(xù)ACL第二步

      --ACL第二步,授權(quán)用戶(演示樣例用scott作為測(cè)試)
begin  
        dbms_network_acl_admin.add_privilege(acl        => 'httprequestpermission.xml',  
                                             principal  => 'SCOTT',  --用戶。請(qǐng)依照實(shí)際變更
                                             is_grant   => TRUE,  
                                             privilege  => 'connect',  
                                             start_date => null,  
                                             end_date   => null);  
end;  
/

    

      --ACL第三步。加入主機(jī)或域名
    begin  
        dbms_network_acl_admin.assign_acl(acl        => 'httprequestpermission.xml',  
                                          host       => 'www.baidu.com',  --http網(wǎng)頁(yè)地址
                                          lower_port => 80,  --http端口
                                          upper_port => NULL);  
    end;  
/

commit;

    begin  
        dbms_network_acl_admin.assign_acl(acl        => 'httprequestpermission.xml',  
                                          host       => 'smtp.sina.com.cn',  --smtpserver地址
                                          lower_port => 25,  --smtp端口
                                          upper_port => NULL);  
    end;  
/
commit;
    

最后就是再次測(cè)試存儲(chǔ)過(guò)程

      SQL> begin
  2    send_mail(mail_body => 'afafagaga');
  3  end;
  4  /
 
PL/SQL procedure successfully completed
    

沒有不論什么錯(cuò)誤,郵件正確收到;(本文測(cè)試環(huán)境:Oracle 11.2.0.0。OS:Windows 2008 Server)

(作者測(cè)試過(guò)程中曾遇到過(guò)

ORA-24247: 網(wǎng)絡(luò)訪問(wèn)被訪問(wèn)控制列表 (ACL) 拒絕;

ORA-29278: SMTP 暫時(shí)性錯(cuò)誤: 421 Service not available。

ORA-44416: ACL 無(wú)效: 無(wú)法解析的主用戶 'AGENT'

三大錯(cuò)誤,為了解決根據(jù)上述方法,這些問(wèn)題可以)

版權(quán)聲明:本文博客原創(chuàng)文章,博客,未經(jīng)同意,不得轉(zhuǎn)載。

Oracle 11g 環(huán)境,使用utl_smtp創(chuàng)建一個(gè)存儲(chǔ)過(guò)程來(lái)發(fā)送郵件


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日韩在线视频免费观看 | 亚洲综合日韩欧美一区二区三 | 欧美视频www | 亚洲精品视频久久久 | 国产精品热 | 成人在线播放 | 日本高清色视频在线观看免费 | 一级毛片ab片高清毛片 | 日本午夜影院 | 亚洲国产精品99久久久久久久久 | 免费观看性欧美一级 | 久久亚洲国产午夜精品理论片 | 91看片在线免费观看 | 一区二区三区视频在线观看 | 日韩欧美在线免费观看视频 | 亚洲黄色在线 | 亚洲欧美中日韩中文字幕 | 国产精品美女www爽爽爽视频 | 国产自产在线 | 国产午夜精品理论片影院 | 91精品国产91久久久久久 | 欧美综合精品 | 欧美日韩北条麻妃一区二区 | 狠狠添| 91亚洲在线| 无遮挡羞羞视频 | 亚洲精品国偷拍自产在线观看 | 日本一区二区三区免费观看 | 日本阿v视频高清在线 | 成人在线国产 | 亚洲视频在线播放 | 亚洲欧美日韩在线一区二区三区 | 日本不卡视频在线播放 | 男人用嘴添女人下身免费视频 | 国产视频日本 | 久久免费视频一区二区三区 | 嫩草影院永久入口在线观看 | 欧美三级视频 | 色综合激情 | 天堂综合网久久 | 国产精品日本一区二区不卡视频 |