попробовав много советов, я наконец обращаюсь к этому сообществу и надеюсь получить некоторые рекомендации.
Я пытаюсь отправить электронную почту из PL/SQL и настроил экземпляр 18c XE на RHL 7.2; свежая установка, ничего дополнительно не установлено.
При соблюдении всех инструкций по созданию кошелька и овраки можно прочитать его без проблем.
кошелёк orapki - кошелек /opt /oracle /product /18c /dbhomeXE /owm /кошельки /root
Oracle PKI Tool Release 18.0.0.0.0 - Производство
18.1.0.0.0: Версия {1}
Copyright (c) 2004, 2017, Oracle und/oder der verbundenen Unternehmen. Все права защищены. Alle Rechte vorbehalten.
Запрошенные сертификаты:
Тема: xxxxxxxxxxxxxxxxxxxxxxxxx
Пользовательские сертификаты:
Доверенные сертификаты:
Тема: CN = accounts.google.com, O = Google LLC, L = Маунтин-Вью, ST = Калифорния, C = США.
Тема: CN = GlobalSign, O = GlobalSign, OU = GlobalSign Root CA - R2
Тема: CN = Google Internet Authority G3, O = Google Trust Services, C = США.
Изнутри оракула я получаю сообщение:
ORA-28759: Fehler beim Öffnen von Datei (ошибка открытия файла)
ORA-06512: в "SYS.UTL_TCP", Zeile 63
ORA-06512: в "SYS.UTL_TCP", Zeile 314
ORA-06512: в "SYS.UTL_SMTP", Zeile 177
ORA-06512: в "SYS.UTL_SMTP", Zeile 201
ORA-06512: в "хххххххх.QM_SEND_MAIL ", Zeile 14 (моя процедура в строке 14)
Моя хранимая процедура выглядит так:
создать или заменить PROCEDURE 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);
/* ** Отправка информации заголовка */
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);
- ИСКЛЮЧЕНИЕ
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;
Как кто-то указал, что права на папку должны быть установлены, я изменил, чтобы проверить, что файл разрешений и владения этим:
[root @ core кошельки] # ls -la
Insgesamt 12
drwx ------. 3 корень корень 79 2. Янв 15:20.
drwxr-XR-х. 5 oracle oinstall 48 2. Янв 14:42 ..
drwxrwxrwx. 2 root oinstall 90 2. Янв 15:05 корень
[root @ core wallets] # cd root
[root @ core root] # ls -la
Insgesamt 16
drwxrwxrwx. 2 root oinstall 90 2. Янв 15:05
drwx ------. 3 корень корень 79 2. Янв 15:20 ..
-rwxrwxrwx. 1 корень oinstall 5893 2. Янв 15:38 cwallet.sso
-rwxrwxrwx. 1 root oinstall 0 2. Янв 15:05 cwallet.sso.lck
-rwxrwxrwx. 1 корень oinstall 5848 2. Янв 15:38 ewallet.p12
-rwxrwxrwx. 1 root oinstall 0 2. Янв 14:48 ewallet.p12.lck
все файлы принадлежат oinstall в соответствии с рекомендациями; все еще оракул не может прочитать кошелек.
Кошелек был создан с помощью Auto-Login; поэтому я попытался с параметром wallet_password установить и не установить; нет разницы.
Сетевое подключение к Googlemail в порядке.
Любые идеи, пожалуйста?
С уважением и благодарностью за любую помощь здесь ...
Клаус