Ağu
19
2015
19
2015
SMTP sunucusu üzerinden e-posta göndermek için Oracle veritabanı etkinleştirme
1. Oracle paketleri SYS.UTL_SMTP ve SYS.UTL_TCP
Oracle paketleri SYS.UTL_SMTP ve SYS.UTL_TCP Oracle veritabanı üzerinde kullanılabilir ve EXECUTE olup olmadığını kontrol edilebilir.
2. SMTP erişimi kontrolü
$ telnet smtp_server 25
Eğer boş bir ekran veya bir hata görürseniz: “telnet: açılamıyor uzak ana bilgisayara bağlanmak için: Bağlantı reddedildi”, DB sunucusu SMTP sunucusu tarafından kabul edilmez. Bu durumda size SMTP erişimi uygulamak zorunda.
3. SMTP üzerinden Oracle veritabanından e-posta gönderme
create or replace procedure testmail(fromm varchar2,too varchar2,sub varchar2,body varchar2,port number)isobjConnection utl_smtp.connection;vrData varchar2(32000);BEGINobjConnection := UTL_smtp.open_connection('<smtp_server>',port);UTL_smtp.helo(objConnection, '<smtp_server>');UTL_smtp.mail(objConnection, fromm);UTL_smtp.rcpt(objConnection, too);UTL_smtp.open_data(objConnection);/* ** Sending the header information */UTL_smtp.write_data(objConnection, 'From: '||fromm || UTL_tcp.CRLF);UTL_smtp.write_data(objConnection, 'To: '||too || UTL_tcp.CRLF);UTL_smtp.write_data(objConnection, 'Subject: ' || sub || UTL_tcp.CRLF);UTL_smtp.write_data(objConnection, 'MIME-Version: ' || '1.0' || UTL_tcp.CRLF);UTL_smtp.write_data(objConnection, 'Content-Type: ' || 'text/html;');UTL_smtp.write_data(objConnection, 'Content-Transfer-Encoding: ' || '"8Bit"' ||UTL_tcp.CRLF);UTL_smtp.write_data(objConnection,UTL_tcp.CRLF);UTL_smtp.write_data(objConnection,UTL_tcp.CRLF||'');UTL_smtp.write_data(objConnection,UTL_tcp.CRLF||'');UTL_smtp.write_data(objConnection,UTL_tcp.CRLF||'<span style="color: red; font-family: Courier New;">'||body||'</span>');UTL_smtp.write_data(objConnection,UTL_tcp.CRLF||'');UTL_smtp.write_data(objConnection,UTL_tcp.CRLF||'');UTL_smtp.close_data(objConnection);UTL_smtp.quit(objConnection);EXCEPTIONWHEN UTL_smtp.transient_error OR UTL_smtp.permanent_error THENUTL_smtp.quit(objConnection);dbms_output.put_line(sqlerrm);WHEN OTHERS THENUTL_smtp.quit(objConnection);dbms_output.put_line(sqlerrm);END testmail;/Aşağıdaki gibi bir hata alındığında; Oracle 11g veritabanı ACL etkinleştirin.
ERROR at line 1:
ORA-29278: SMTP transient error: 421 Service not available
ORA-06512: at “SYS.UTL_SMTP”, line 54
ORA-06512: at “SYS.UTL_SMTP”, line 138
ORA-06512: at “SYS.UTL_SMTP”, line 699
ORA-06512: at “me.TESTMAIL”, line 35
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at line 1
ORA-29278: SMTP transient error: 421 Service not available
ORA-06512: at “SYS.UTL_SMTP”, line 54
ORA-06512: at “SYS.UTL_SMTP”, line 138
ORA-06512: at “SYS.UTL_SMTP”, line 699
ORA-06512: at “me.TESTMAIL”, line 35
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at line 1
Database kullanıcısı için ACL oluşturma;
BEGINDBMS_NETWORK_ACL_ADMIN.CREATE_ACL (acl => 'smtp-gate-permissions.xml',description => 'Permissions for smtp gate',principal => 'SCOTT',is_grant => TRUE,privilege => 'connect');COMMIT;END;/Ana Bilgisayar için ACL Atama
BEGINDBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (acl => 'smtp-gate-permissions.xml',host => '<smtp_server>',lower_port => 25,upper_port => null);COMMIT;END;/Oluşturulan ACL doğru olduğunu onaylayın
SELECT host, lower_port, upper_port, aclFROM dba_network_acls/SELECT acl,principal,privilege,is_grant,TO_CHAR(start_date, 'DD-MON-YYYY HH24:MI') AS start_date,TO_CHAR(end_date, 'DD-MON-YYYY') AS end_dateFROM dba_network_acl_privileges/Latest posts by Elvan Uysal (see all)
- Alacaklar Ödemelerinde Tahsile Verme İşleminin “Başlatılan Onay” Statüsünde Kalması - 29 Ocak 2018
- Alacaklar Muhasebesi Hesaba Mahsup Ödeme Eşleme - 30 Aralık 2017
- Dönemsel Muhasebe “Dönemi Bekleyen İşlemler “Hatası - 23 Kasım 2017
Yazar





çok başarıolı bir yazı elinize sağlık