簡體   English   中英

使用oracle linux 5.9在oracle 11g中發送電子郵件時出錯

[英]error in sending email in oracle 11g with oracle linux 5.9

我的操作系統是oracle linux 5.9。我有一個使用utl_smtp軟件包發送電子郵件的過程(在oracle11g中)

    declare
    l_mail_con 
     utl_smtp.connection;
    begin
    l_mail_con:=utl_smtp.open_connection('smtp.gmail.com',25);
    utl_smtp.EHLO(l_mail_con,'smtp.gmail.com');
    utl_smtp.command(l_mail_con,'STARTTLS');
    utl_smtp.command(l_mail_con,'AUTH','LOGIN');
    utl_smtp.command(l_mail_con,utl_encode.base64_encode(utl_raw.cast_to_raw('myemail@gmail.com')));
    utl_smtp.command(l_mail_con,utl_encode.base64_encode(utl_raw.cast_to_raw('mypass')));

    utl_smtp.mail(l_mail_con,'mymail@gmail.com');
    utl_smtp.rcpt(l_mail_con,'receivermail.com');
    utl_smtp.data(l_mail_con,'hi saeideh'||utl_tcp.crlf||utl_tcp.crlf);
    utl_smtp.quit(l_mail_con);

    end;

    /

這是我的錯誤

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 219
ORA-06512: at line 7

這是telnet輸出

$ telnet smtp.gmail.com 25

Trying 173.194.65.109...

Connected to smtp.gmail.com (173.194.65.109).

Escape character is '^]'.

220 smtp.gmail.com ESMTP fa13sm2443360wid.17 - gsmtp

ehlo Page on gmail.com

smtp.gmail.com at your service, [188.158.207.128]

250-SIZE 35882577
250-8BITMIME

250-STARTTLS

250-ENHANCEDSTATUSCODES

250-PIPELINING

250-CHUNKING

250 SMTPUTF8

starttls
220 2.0.0 Ready to start TLS

auth login

Connection closed by foreign host.

我該如何解決這個錯誤? 請幫我謝謝

我認為您尚未啟用ACL (access control list)

  1. 在Oracle數據庫中使用一個數據庫用戶創建ACL

     BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL ( acl => 'smtp-gate-permissions.xml', description => 'Permissions for smtp gate', principal => 'SCOTT', is_grant => TRUE, privilege => 'connect' ); COMMIT; END; 
  2. 將ACL分配給一個或多個網絡主機

     BEGIN DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL ( acl => 'smtp-gate-permissions.xml', host => '<smtp_server>', lower_port => 25, upper_port => null); COMMIT; END; 
  3. 確認

     SELECT host, lower_port, upper_port, acl FROM 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_date FROM dba_network_acl_privileges 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM