Nachdem ich viele Ratschläge ausprobiert habe, wende ich mich endlich an diese Community und hoffe, dass ich ein wenig Anleitung bekomme.

Ich versuche, E-Mails aus PL / SQL heraus zu senden und habe eine 18c XE-Instanz auf RHL 7.2 eingerichtet. Neuinstallation, nichts zusätzlich installiert.

Wenn Sie alle Anweisungen zum Erstellen einer Brieftasche und von orapki befolgt haben, können Sie diese problemlos lesen.


orapki wallet display - wallet / opt / oracle / product / 18c / dbhomeXE / owm / wallets / root

Oracle PKI Tool Release 18.0.0.0.0 - Produktion

18.1.0.0.0: Version {1}

Copyright (c) 2004, 2017, Oracle und / oder der verbundenen Unternehmen. Alle Rechte vorbehalten. Alle Rechte vorbehalten.

Angeforderte Zertifikate:

Betreff: xxxxxxxxxxxxxxxxxxxxxxx

Benutzerzertifikate:

Vertrauenswürdige Zertifikate:

Betreff: CN = accounts.google.com, O = Google LLC, L = Mountain View, ST = Kalifornien, C = USA

Betreff: CN = GlobalSign, O = GlobalSign, OU = GlobalSign Stammzertifizierungsstelle - R2

Betreff: CN = Google Internet Authority G3, O = Google Trust Services, C = USA


Aus dem Inneren von Orakel erhalte ich die Nachricht:


ORA-28759: Fehler beim Öffnen von Datei

ORA-06512: In "SYS.UTL_TCP", Zeile 63

ORA-06512: In "SYS.UTL_TCP", Zeile 314

ORA-06512: In "SYS.UTL_SMTP", Zeile 177

ORA-06512: In "SYS.UTL_SMTP", Zeile 201

ORA-06512: in "xxxxxxxxx.QM_SEND_MAIL", Zeile 14 (meine Prozedur in Zeile 14)


Meine gespeicherte Prozedur sieht folgendermaßen aus:


PROCEDURE erstellen oder ersetzen qm_send_mail (

    p_from      VARCHAR2,

    p_to        VARCHAR2,

    p_subject   VARCHAR2,

    p_body      VARCHAR2

) IS





    objconnection    utl_smtp.connection;

    vrdata           VARCHAR2(32000);

    v_plain_string   VARCHAR2(32000);

    v_username_b64   VARCHAR2(32000);

    v_password_b64   VARCHAR2(32000);

BEGIN

    objconnection := utl_smtp.open_connection(  host => 'smtp.googlemail.com',

                                                port => 587,--global.g_smtp_port_ssl,

                                                wallet_path => 'file:/opt/oracle/product/18c/dbhomeXE/owm/wallets/root',

                                                --wallet_password => 'xxxxxxxxx',

                                                secure_connection_before_smtp => true);





                    utl_smtp.ehlo(objconnection, 'fritzquinum.dnsalias.com');    -- Must use EHLO  vs HELO

    utl_smtp.starttls(objconnection);





    utl_smtp.auth(objconnection, 'mygooglemailaccount', 'mygooglemailpassword', utl_smtp.all_schemes);





    utl_smtp.mail(objconnection, p_from);

    utl_smtp.rcpt(objconnection, p_to);

    utl_smtp.open_data(objconnection);

/ * ** Header-Informationen senden * /

    utl_smtp.write_data(objconnection, 'From: '

                                       || p_from

                                       || utl_tcp.crlf);

    utl_smtp.write_data(objconnection, 'To: '

                                       || p_to

                                       || utl_tcp.crlf);

    utl_smtp.write_data(objconnection, 'p_subjectject: '

                                       || p_subject

                                       || 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: black; font-family: Courier New;">'

                                       || p_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);

- AUSNAHME

    WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN

        utl_smtp.quit(objconnection);

        dbms_output.put_line(sqlerrm);

    WHEN OTHERS THEN

        utl_smtp.quit(objconnection);

        dbms_output.put_line(sqlerrm);

END qm_send_mail;

Wie jemand darauf hinwies, dass die Rechte für den Ordner festgelegt werden müssen, habe ich geändert, um zu testen, ob die Dateiberechtigungen und der Besitz dazu gehören:


[root @ core wallets] # ​​ls -la

insgesamt 12

drwx ------. 3 root root 79 2. Jan 15:20.

drwxr-xr-x. 5 oracle oinstall 48 2. Jan 14:42 ..

drwxrwxrwx. 2 root oinstall 90 2. Jan 15:05 root

[root @ core wallets] # ​​cd root

[root @ core root] # ls -la

insgesamt 16

drwxrwxrwx. 2 root oinstall 90 2. Jan 15:05.

drwx ------. 3 wurzel wurzel 79 2. Jan 15:20 ..

-rwxrwxrwx. 1 root oinstall 5893 2. Jan 15:38 cwallet.sso

-rwxrwxrwx. 1 root oinstall 0 2. Jan 15:05 cwallet.sso.lck

-rwxrwxrwx. 1 root oinstall 5848 2. Jan 15:38 ewallet.p12

-rwxrwxrwx. 1 root oinstall 0 2. Jan 14:48 ewallet.p12.lck


Alle Dateien gehören, wie empfohlen, oinstall. Orakel kann immer noch nicht die Brieftasche lesen.

Die Brieftasche wurde mit Auto-Login erstellt. also habe ich versucht mit dem parameter wallet_password zu setzen und nicht zu setzen; kein Unterschied.

Netzwerkverbindung zu Google Mail ist in Ordnung.

Irgendwelche Ideen, bitte?

Herzliche Grüße und vielen Dank für jede Hilfe hier ...

Klaus

Klaus Klöser
quelle