===>> Отправка почты из oracle при NTLM auth <<===
1. Имеем все доступы на хостах и почтовый ящик (у меня outlook);
2. Настраиваем ACL
3. Говорим ораклу про сервер почты
alter system set smtp_out_server = '
mailhost.domain.com:25' scope=Both;
4. Даем гранты
grant execute on dbms_crypto to &&your_schema;
под SYS
3. Компилим пакет NTLM_RESPONSES (+ даем гранты на пакет)
пакет генерирует сообщения, необходимые для аутентификации по протоколу Microsoft NTLM
скачать
https://sourceforge.net/projects/ntlm-for-plsql/Ну и пример отправки:
DECLARE
n_connection UTL_SMTP.CONNECTION;
type1NTLMResponse VARCHAR2(512);
type2NTMLMsg UTL_SMTP.reply;
type3NTLMResponse VARCHAR2(512);
type3Reply UTL_SMTP.reply;
mailhost VARCHAR2(64) := '
mailhost.domain.com';
mailport VARCHAR2(5) := '25';
user VARCHAR2(64) := 'username';
password VARCHAR2(64) := '-PassWord-';
domain VARCHAR2(64) := 'NTDOMAIN';
hostname VARCHAR2(64) := '
myhost.domain.com';
from_user VARCHAR2(64) := user || '
@domain.com';
to_user VARCHAR2(64) := 'test_user@domain.com';
subject VARCHAR2(64) := 'Test message';
body VARCHAR2(64) := 'This is the body of the message'|| CHR(13) || CHR(10) ||'Regards';
BEGIN
n_connection := UTL_SMTP.OPEN_CONNECTION(mailhost, mailport);
UTL_SMTP.EHLO(n_connection,hostname);
UTL_SMTP.COMMAND(n_connection,'AUTH NTLM');
type1NTLMResponse:=NTLM_RESPONSES.generateType1Msg(domain,hostname);
type2NTMLMsg:=UTL_SMTP.COMMAND(n_connection, type1NTLMResponse);
type3NTLMResponse:=NTLM_RESPONSES.generateType3Msg(type2NTMLMsg.text,user,password,domain,hostname);
type3Reply:=UTL_SMTP.COMMAND(n_connection, type3NTLMResponse);
UTL_SMTP.MAIL(n_connection, 'a1cagc@indra.es');
UTL_SMTP.RCPT(n_connection, 'jmartino@indra.es');
UTL_SMTP.DATA(n_connection,
'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || CHR(13) || CHR(10) ||
'From: <'|| from_user ||'>' || CHR(13) || CHR(10) ||
'Subject: '|| subject || CHR(13) || CHR(10)||
'To: <'|| to_user || '>' || CHR(13) || CHR(10) || CHR(13) || CHR(10) ||
body|| CHR(13) || CHR(10) );
UTL_SMTP.QUIT(n_connection);
END;
У меня на внешнюю почту маил из почтовика организации пока ничего не пришло. На внутреннюю почту (сам себе) я отправил. В принципе это решает мою текущую задачу.