попробовав много советов, я наконец обращаюсь к этому сообществу и надеюсь получить некоторые рекомендации.

Я пытаюсь отправить электронную почту из 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 в порядке.

Любые идеи, пожалуйста?

С уважением и благодарностью за любую помощь здесь ...

Клаус

0