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