Procedure Send Mail com erro

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
fabissilva
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 19
Registrado em: Seg, 09 Set 2019 4:29 pm
Localização: Sorocaba - SP
Fabi
INSERT INTO possivel VALUES ('Nada é impossível para aquele que persiste');

Tenho o scrip abaixo que estava funcionando normalmente, porém, acredito eu, que o certificado do gmail expirou.
Com o OpenSSL> s_client -connect smtp.gmail.com:587 -starttls smtp, Gerei outro certificado para meu wallet e atualizei os ACL, mas mesmo assim ainda continua com erro para enviar na linha l_reply := sys.utl_smtp.starttls(L_MAIL_CONN);

Selecionar tudo

CREATE OR REPLACE PROCEDURE PR_JUN_MAIL_NF_DEVOL
AS
  VAR_CONTROLE  NUMBER;
  VAR_MENSAGEM    VARCHAR2(32767);
  L_MAILHOST        VARCHAR2(64) := 'smtp.gmail.com';
  P_USERNAME_       VARCHAR2(50) := 'adminjun@gmail.net';
  P_PASSWORD_       VARCHAR2(50) := 'xxxxxxxx';
  L_DE              VARCHAR2(64) := 'Intranet';
  L_FROM            VARCHAR2(64) := 'adminjun@gmail.net';
  k_wallet_path     CONSTANT VARCHAR2(100) := 'file:/oracle/ora11g/owm/wallets';
  k_wallet_password CONSTANT VARCHAR2(100) := 'xxxxxxxxxxxxx';
  k_domain          CONSTANT VARCHAR2(100) := 'localhost';
  l_port            INTEGER       := 587;
  l_reply           utl_smtp.reply;
  l_replies         utl_smtp.replies;
  
  TO_NAME         VARCHAR2(200):= 'ti@gmail.net';
  SUBJECT         VARCHAR2(200):= 'NOTAS FISCAIS DE DEVOLUCAO EMITIDAS';
  L_MAIL_CONN     UTL_SMTP.CONNECTION;

BEGIN

  VAR_CONTROLE:=1;

  BEGIN
   
   SELECT distinct 0
     INTO VAR_CONTROLE
     from TB_JUN_NFE nfe
    inner join bgm_notafiscal bnf on nfe.codintnf_bgmnf = bnf.codintnf
    inner join esfclass e on e.codclassfisc = bnf.codclassfisc   
    INNER join BGM_CLIENTE CLI on bnf.Codcli = CLI.CODCLI
    INNER join CTR_FILIAL F on nfe.empresa = f.codigoempresa and nfe.filial = f.codigofl
    WHERE NFE.DATAEMISSAO > to_date('01/02/2017', 'dd/mm/yyyy')
      and upper(e.descclassfisc) like '%DEVOLU%'
      AND NFe.Codintnf_Bgmnf  || upper(decode(nfe.status,'A','AUTORIZADA', 'C','CANCELADA', 'I','INUTILIZADA', 'N','NORMAL', 'P','PROCESSANDO', 'R','REJEITADA')) not in (select jc.codintnf || upper(jc.statunf) from CONTROLE_NF_DEV JC);
          
  EXCEPTION
    WHEN OTHERS THEN
    VAR_CONTROLE:=1;
  end;

  if VAR_CONTROLE = 0 then
    
    l_reply := UTL_SMTP.OPEN_CONNECTION(
                host             => L_MAILHOST,
                port             => l_port,
                c                => L_MAIL_CONN,
                wallet_path      => k_wallet_path,
                wallet_password  => k_wallet_password,
                secure_connection_before_smtp => FALSE);
    Dbms_Output.Put_Line ('apos conectar');   
    
    l_replies := sys.utl_smtp.ehlo(L_MAIL_CONN, k_domain);
    l_reply   := sys.utl_smtp.starttls(L_MAIL_CONN);
    l_replies := sys.utl_smtp.ehlo(L_MAIL_CONN, k_domain);
    l_reply   := sys.utl_smtp.auth(L_MAIL_CONN, P_USERNAME_, P_PASSWORD_, utl_smtp.all_schemes);
    l_reply   := sys.utl_smtp.mail(L_MAIL_CONN, L_FROM);
    l_reply   := sys.utl_smtp.RCPT(L_MAIL_CONN, TO_NAME);
    l_reply := UTL_SMTP.OPEN_DATA(L_MAIL_CONN);
    
    UTL_SMTP.WRITE_DATA( L_MAIL_CONN, 'FROM:'    ||L_DE||'<'|| L_FROM|| '>' || UTL_TCP.CRLF);
    UTL_SMTP.WRITE_DATA( L_MAIL_CONN, 'TO:'      ||TO_NAME||UTL_TCP.CRLF);

    UTL_SMTP.WRITE_DATA( L_MAIL_CONN, 'SUBJECT:' ||SUBJECT||UTL_TCP.CRLF);

    UTL_SMTP.WRITE_DATA(L_MAIL_CONN, 'Content-Type: text/plain; boundary="gc0p4Jq0M2Yt08jU534c0p"'||UTL_TCP.CRLF);
    UTL_SMTP.WRITE_DATA(L_MAIL_CONN, 'MIME-Version: 1.0'||UTL_TCP.CRLF);

    UTL_SMTP.WRITE_DATA(L_MAIL_CONN, '--gc0p4Jq0M2Yt08jU534c0p' );
    UTL_SMTP.WRITE_DATA(L_MAIL_CONN, 'Content-Type: text/plain' );
    UTL_SMTP.WRITE_DATA(L_MAIL_CONN, ' '||UTL_TCP.CRLF);

    VAR_MENSAGEM:='Nova(s) NFs de Devolucao, segue detalhes abaixo:' || chr(13) || chr(10) ;
    UTL_SMTP.WRITE_DATA(L_MAIL_CONN, VAR_MENSAGEM||UTL_TCP.CRLF);

  for cur_NFDEV in (
    
             select nfe.empresa,
                     TO_CHAR(nfe.FILIAL) || '-' || F.CIDADEFL AS FILIAL,
                     bnf.numeronf AS NUMERO,
                     TO_CHAR(NFe.Dataemissao, 'dd/mm/yyyy') AS EMISSAONF,
                     to_char(bNF.Valortotalnf,  '999G999G990D00','NLS_NUMERIC_CHARACTERS='',.''') AS VALOR,
                     decode(bNF.Lanctointegradocpg, 'S', 'Sim', 'não') as INTEGRADA,
                     decode(nfe.status,'A','AUTORIZADA','C','CANCELADA','I','INUTILIZADA','N','NORMAL','P','PROCESSANDO','R','REJEITADA') as STATUS_NF,
                     fn_jun_ret_nf('O', nfE.Codintnf_Bgmnf) as NFentrada,
                     FORN.NRFORN,
                     FORN.RSOCIALFORN,
                     NFE.Codintnf_Bgmnf AS codnf
                from TB_JUN_NFE nfe
               INNER join bgm_notafiscal bnf on nfe.codintnf_bgmnf = bnf.codintnf
               inner join esfclass e on e.codclassfisc = bnf.codclassfisc       
               INNER join BGM_CLIENTE CLI  on bnf.Codcli = CLI.CODCLI
               INNER join CTR_FILIAL F  on nfe.empresa = f.codigoempresa and nfe.filial = f.codigofl
               INNER JOIN BGM_FORNECEDOR FORN ON CLI.NRINSCRICAOCLI = FORN.NRINSCRICAOFORN
               WHERE NFE.DATAEMISSAO > to_date('01/02/2017', 'dd/mm/yyyy')
                 and upper(e.descclassfisc) like '%DEVOLU%'
                 AND NFe.Codintnf_Bgmnf  || upper(decode(nfe.status,'A','AUTORIZADA','C','CANCELADA','I','INUTILIZADA','N','NORMAL','P',
                            'PROCESSANDO','R','REJEITADA')) not in(select jc.codintnf || upper(jc.statunf) from CONTROLE_NF_DEV JC) 
                 ORDER BY NFE.Codintnf_Bgmnf
  ) loop
    VAR_MENSAGEM:='Num. NF: '  || cur_NFDEV.NUMERO  || chr(13) || chr(10);
    VAR_MENSAGEM:=VAR_MENSAGEM || 'Emp/ Filial: '   || cur_NFDEV.Empresa ||' / '|| cur_NFDEV.Filial || chr(13) || chr(10);
    VAR_MENSAGEM:=VAR_MENSAGEM || 'Data Emissao: '  || cur_NFDEV.Emissaonf || chr(13) || chr(10);
    VAR_MENSAGEM:=VAR_MENSAGEM || 'NF devolvida: '  || cur_NFDEV.NFentrada || chr(13) || chr(10);
    VAR_MENSAGEM:=VAR_MENSAGEM || 'Valor: R$ '      || cur_NFDEV.Valor || chr(13) || chr(10);
    VAR_MENSAGEM:=VAR_MENSAGEM || 'Integrado CPG: ' || cur_NFDEV.Integrada || chr(13) || chr(10);
    VAR_MENSAGEM:=VAR_MENSAGEM || 'Status da NF: '  || cur_NFDEV.Status_Nf || chr(13) || chr(10);
    VAR_MENSAGEM:=VAR_MENSAGEM || 'Nr. Fornec.: '   || cur_NFDEV.Nrforn || chr(13) || chr(10);
    VAR_MENSAGEM:=VAR_MENSAGEM || 'Razao Social: '  || cur_NFDEV.Rsocialforn || chr(13) || chr(10);

    UTL_SMTP.WRITE_DATA(L_MAIL_CONN, VAR_MENSAGEM || UTL_TCP.CRLF);
    VAR_MENSAGEM:='------------------------------------------------------------------';
    UTL_SMTP.WRITE_DATA(L_MAIL_CONN, VAR_MENSAGEM || UTL_TCP.CRLF);

    insert into controle_nf_dev (codintnf, numeronf, statunf, envio_email_abe, data_envio_emis)
    values (cur_NFDEV.codnf, cur_NFDEV.NUMERO, cur_NFDEV.Status_Nf, 'S', sysdate);
  END LOOP;
  end if;

  IF VAR_CONTROLE <> 1 THEN
    commit;
    
  l_reply := UTL_SMTP.CLOSE_DATA(L_MAIL_CONN);
  l_reply := UTL_SMTP.QUIT(L_MAIL_CONN);
  
  END IF;
END;
Minha ACL esta configura assim

ACL PRIVILEGE IS_GRANT INVERT
/sys/acls/utl_mail_monitor.xml Connect true false
/sys/acls/utl_mail_monitor.xml use-client-certificates true false
/sys/acls/utl_mail_monitor.xml resolve true false
/sys/acls/utl_mail_monitor.xml use-passwords true false

HOST LOWER_PORT UPPER_PORT ACL
smtp.gmail.com 587 587 /sys/acls/utl_mail_monitor.xml
localhost 465 587 /sys/acls/utl_mail_monitor.xml

BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_WALLET_ACL(
acl => 'utl_mail_monitor.xml',
wallet_path => 'file:/oracle/ora11g/owm/wallets/');


segui orientação desta pagina, mas sem sucesso https://github.com/YairPR/Oracle/wiki/E ... S----Gmail

será que alguém teria alguma ideia do que esta acontecendo?
Anexos
ERRO.JPG
ERRO.JPG (27.67 KiB) Exibido 1118 vezes
WALLET.JPG
Avatar do usuário
fabissilva
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 19
Registrado em: Seg, 09 Set 2019 4:29 pm
Localização: Sorocaba - SP
Fabi
INSERT INTO possivel VALUES ('Nada é impossível para aquele que persiste');

usado a solução viewtopic.php?f=2&t=10796
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes