2016-08-05 36 views
0

Gibt es eine andere Art und Weise E-Mail von Oracle zu senden SMTP außer der Verwendung von:Mail sendet mit PL/SQL ohne SMTP

Bitte lassen Sie mich wissen, wenn es irgendeine Art und Weise mit einem gewissen Beispiel ist, wenn möglich.

+0

Haben Sie die UTL_SMTP Paket bedeuten vermeiden; oder nicht mit dem SMTP-Protokoll oder einem SMTP-Server? –

+0

Hey Alex .. nicht mit SMTP-Server –

+1

Eine Alternative ist die Verwendung einer Mail-Gateway, die eine REST-style-API wie Mailgun bietet. Ich habe an einer PL/SQL-API für Mailgun gearbeitet, die dich interessieren könnte: https://github.com/jeffreykemp/mailgun-plsql-api –

Antwort

1

Starting from Oracle 8i release 8.1.6, one can send E-mail messages directly from PL/SQL using either the UTL_TCP or UTL_SMTP packages.

senden Mail mit UTL_TCP

CREATE OR REPLACE PROCEDURE SEND_MAIL (
    msg_from varchar2 := 'oracle', 
    msg_to  varchar2, 
    msg_subject varchar2 := 'E-Mail message from your database', 
    msg_text varchar2 := ) 
IS 
    c utl_tcp.connection; 
    rc integer; 
BEGIN 
    c := utl_tcp.open_connection('127.0.0.1', 25);  -- open the SMTP port 25 on local machine 
    dbms_output.put_line(utl_tcp.get_line(c, TRUE)); 
    rc := utl_tcp.write_line(c, 'HELO localhost'); 
    dbms_output.put_line(utl_tcp.get_line(c, TRUE)); 
    rc := utl_tcp.write_line(c, 'MAIL FROM: '||msg_from); 
    dbms_output.put_line(utl_tcp.get_line(c, TRUE)); 
    rc := utl_tcp.write_line(c, 'RCPT TO: '||msg_to); 
    dbms_output.put_line(utl_tcp.get_line(c, TRUE)); 
    rc := utl_tcp.write_line(c, 'DATA');     -- Start message body 
    dbms_output.put_line(utl_tcp.get_line(c, TRUE)); 
    rc := utl_tcp.write_line(c, 'Subject: '||msg_subject); 
    rc := utl_tcp.write_line(c,); 
    rc := utl_tcp.write_line(c, msg_text); 
    rc := utl_tcp.write_line(c, '.');     -- End of message body 
    dbms_output.put_line(utl_tcp.get_line(c, TRUE)); 
    rc := utl_tcp.write_line(c, 'QUIT'); 
    dbms_output.put_line(utl_tcp.get_line(c, TRUE)); 
    utl_tcp.close_connection(c);       -- Close the connection 
END; 
/

-- Test it: 
set serveroutput on 

exec send_mail(msg_to =>'[email protected]'); 

exec send_mail(msg_to =>'[email protected]', - 
      msg_text=>'Look Ma, I can send mail from plsql' - 
      ); 
+0

Danke !! für Ihre Hilfe, aber müssen wir jede Einrichtung in der Umgebung zu ermöglichen, damit es funktioniert, Coz das SMTP ist deaktiviert oder nicht in unserer Testumgebung installiert. Bitte helfen Sie –

+0

Sie überprüfen den Status von Port 25 https://www.siteground.com/kb/smtp_port_25_blocked/ – are