Versão atual:

API Rest para enviar PDF por e-mail

Bom dia, pessoal.

Fiz uma API Rest que chama uma rotina que dispara e-mail com o PDF e o XML da nota para um e-mail informado nos parâmetros, não retorna nada na chamada além de uma frase html se teve sucesso ao enviar o e-mail ou não. Estou com o seguinte problema: se eu chamo essa rotina na mão, ela dispara o e-mail com os 2 anexos (pdf e xml), se eu chamo pelo SOAPUI pra testar a API, o e-mail é enviado somente com o anexo do XML, o PDF não vai. Se eu ajusto a rotina pra enviar só o PDF, manual envia, pelo SOAPUI chamando a API Rest, dá erro ao enviar o e-mail.

É como se houvesse uma limitação para anexar o PDF no e-mail. Alguém já passou por algo parecido com isso?

Abaixo, o código da API:

#INCLUDE "TOTVS.CH"
#include 'parmtype.ch'
#Include "RESTFUL.CH"

//-------------------------------------------------------------------
/*/{Protheus.doc} danfepdf
Classe usada para gerar o pdf de uma nota e enviar para o e-mail
especificado nos parâmetros
@author  João Leão
@since   18/01/2022
@version 12.1.25
/*/
//-------------------------------------------------------------------
WSRESTFUL danfepdf DESCRIPTION "DANFE por e-mail"

WSDATA cFilDoc        AS STRING
WSDATA cCodCli        AS STRING
WSDATA cLojaCli        AS STRING
WSDATA cNumDoc        AS STRING
WSDATA cSerDoc        AS STRING
WSDATA cEmail        AS STRING

WSMETHOD GET DESCRIPTION "DANFE por e-mail"

END WSRESTFUL

//-------------------------------------------------------------------
/*/{Protheus.doc} GET
Método GET da classe
@author  João Leão
@since   18/01/2022
@version 12.1.25
/*/
//-------------------------------------------------------------------

WSMETHOD GET WSRECEIVE cFilDoc,cCodCli,cLojaCli,cNumDoc,cSerDoc,cEmail WSSERVICE danfepdf

Local nI        := 0
Local lURLParms    := Len(::aURLParms) > 0

// define o tipo de retorno do método
::SetContentType("text/html")

// verifica se recebeu parametro pela URL
/**To do validar parâmetros vindos por URL */

If !Empty(::cFilDoc) .And. !Empty(::cCodCli) .And. !Empty(::cLojaCli) .And. !Empty(::cNumDoc);
.And. !Empty(::cSerDoc) .And. !Empty(::cEmail)
    If U_PROMA750(::cFilDoc, ::cCodCli, ::cLojaCli, ::cNumDoc, ::cSerDoc, ::cEmail)
        ::SetResponse('{"<p>Danfe enviada por e-mail.</p>"}')
        ::SetStatus(200)
    Else
        ::SetResponse('{"<p>Nota Fiscal não localizada.</p>"}')
        ::SetStatus(422)
    EndIf
Else
    ::SetResponse('{"<p>Obrigatório informar os parâmetros: cFilDoc,cCodCli,cLojaCli,cNumDoc,cSerDoc,cEmail.</p>"}')
    ::SetStatus(400)
EndIf

Return .T.

Versões (2):

Ver a versão formatada

API Rest para enviar PDF por e-mail

Comentário

new question