Histórico da Página
Informações | ||
---|---|---|
| ||
|
Pré Requisitos
...
- TOTVS 12 com versão 12.1.
...
- 15 ou superior;
- Comunicação com o AppServer ativa e funcional para o resgate das informações 'base' para o envio de e-mail;
- Servidor de e-mails com
...
- suporte a SMTP e uma conta válida para envio de e-mails.
Mail Service
O Datasul Mail Service é um serviço que permite que tanto aplicações Progress como HTML possam realizar de forma simples o envio de e-mails.
Por se tratar de um serviço a chamada para o envio do e-mail se dá através de chamadas REST. A imagem abaixo exemplifica a arquitetura do serviço:
Configurações mínimas
// TODO: Reavaliar para utilizar os paramêtros cadastrados no btb962zb (emsfnd.param_email).
Para utilização do serviço é preciso se atentar a algumas configurações no produto.
...
- No caso dos ambientes locais ao utilizar uma das contas de e-mails da TOTVS o usuário é simplesmente o e-mail sem o '@totvs.com.br'.
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#+----------------------------------------------------------+
#| DATASUL MAIL |
#+----------------------------------------------------------+
# Usuário e senha da conta que irá realizar o envio de e-mail.
mail.smtp.user=<username ou login>
mail.smtp.pass=<senha do email>
# Endereço e porta do serviço de e-mail.
mail.smtp.host=mail.totvs.com.br
mail.smtp.port=587
# Habilita o suporte a SMTPS caso o servidor de e-mail esteja com HTTPS (SSL) habilitado.
mail.smtp.ssl.enable=true
# Indica se o servidor de e-mail está com o suporte ao TLS ativo.
mail.smtp.starttls.enable=true |
Serviços disponíveis
Através do contexto datasul-mail/resources estão disponíveis 3 serviços para envio de e-mails com as seguintes assinaturas:
...
- debug: (true/false) Habilita/desabilita o modo de DEBUG da API do JAVA MAIL;
- reload: (true/false) Indica se deve ou não recarregar as configurações do serviço de e-mail.
...
- Path: N/A.
- Query: N/A.
- Body: JSON contendo a entidade Mail;
- Response: Uma cópia da entidade Mail em formato JSON.
...
- Path: N/A.
- Query: N/A.
- Body: JSON contendo a entidade Mail;
- Response: Uma cópia da entidade Mail em formato JSON.
...
...
- subject: (string) assunto do e-mail;
- content: (string) conteúdo do e-mail, podendo ser HTML;
- from: (string) endereço de e-mail do remetente da mensagem;
- fromName: (string) (opcional) caso queira utilizar um 'apelido' para sobrepor o endereço de e-mail do remetente;
- to: ([string]) lista contendo os endereços de destinatários;
- cc: ([string]) (opcional) lista contendo os endereços de destinatários a receberem a cópia do e-mail;
- bcc: ([string]) (opcional) lista contendo os endereços de destinatários a receberem a cópia oculta do e-mail;
- returnNotificationType: (integer) (opcional): indica como deve ser o retorno em caso do envio retornar alguma confirmação ou erro.
- 1. Retorna o e-mail completo;
- 2. Retorna apenas o cabeçalho (default).
- deliveryNotification: (integer) (opcional): indica o tipo de notificação que o remetente gostaria de receber.
- -1. Nenhuma (defaul);
- 1. Ao entregar o e-mail ao destinatário;
- 2. Ao falhar na entrega ao destinatário;
- 4. Ao atrasar a entrega ao destinatário;
- readNotificationTo: (string) Em caso de leitura do e-mail, caso tenha sido informado um endereço válido para este atributo, este receberá uma notificação de que o e-mail foi lido.
Dica |
---|
As mensagens de confirmação de entrega e falhas serão retornadas a caixa de e-mail do usuário que estiver parametrizado no datasul_framework.properties. Entretanto, quando informado um endereço de e-mail válido no atributo readNotificationTo este receberá o e-mail de confirmação de leitura. |
Dica |
---|
O envio de e-mail ocorre de forma assíncrona desta forma os erros ou retornos de falhas do envio propriamente dito não são resgatados no momento da execução. Isso se deve ao fato de que o Datasul Mail Service delega ao servidor SMTP o envio da mensagem, sendo que este pode não efetuar o envio no momento em que for solicitado, variando de acordo com a sua fila de despachos e parametrizações. |
API Progress
A API Progress se destina ao uso exclusivo para envio de e-mails, partindo o princípio que conteúdo do e-mail já esteja estruturado e o Progress vai apenas solicitar o envio da mensagem. Para este cenário foi disponibilizada a api: utp/ut-mail-api.p
Nesta API estão disponíveis 3 método, com a seguintes assinaturas:
...
Configurações Mínimas
...
Para utilização do serviço, algumas configurações são necessárias:
- Inserir o trecho de código abaixo no arquivo "josso-agent-config.xml".
Bloco de código | ||
---|---|---|
| ||
<partner-app>
<context>/dts/datasul-mail</context>
</partner-app> |
- Configurar os parâmetros de localização e porta, interno e externo, do servidor de aplicação (JBoss) no programa 'Parâmetros Gerais Módulo Básico' (btb946aa), aba 'Servidor'. Para mais informações acesse Configurar Aba Servidor (BTB946AA).
- Configurar os parâmetros para envio de e-mail utilizando o programa 'Parâmetros Email Foundation' (btb962zb). Para mais informações acesse Parâmetros Email Foundation (BTB962ZB).
Mail Service
...
O Datasul Mail Service é um serviço que permite tanto aplicações Progress quanto HTML possam realizar envio de e-mails de forma simples.
Por se tratar de um serviço, a chamada para o envio do e-mail usando esta funcionalidade é realizada através de chamadas REST.
Exemplo da arquitetura do serviço:
Serviços Disponíveis
...
Através do contexto datasul-mail/resources existem 3 serviços disponíveis para envio de e-mails com as seguintes assinaturas:
@GET /help
Path: N/A.
Query: N/A.
Response: Retorna as propriedades do Mail Service (mail.smtp.sender, mail.smtp.auth, mail.smtp.user, mail.smtp.pass, mail.smtp.host, mail.smtp.port, mail.smtp.ssl.enable, mail.smtp.starttls.enable, mail.smtp.debug.enable).
Bloco de código | ||||
---|---|---|---|---|
| ||||
http://<server>:8080/dts/datasul-mail/resources/help/ |
@POST /send: @Consumes({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN })
Este serviço recebe o e-mail e suas opções para envio. Não suporta anexos.
Path: N/A.
Query: N/A.
Body: JSON contendo a entidade Mail;
Response: Uma cópia da entidade Mail em formato JSON.
Bloco de código | ||||
---|---|---|---|---|
| ||||
http://<server>:8080/dts/datasul-mail/resources/send/ |
@POST /send: @Consumes(MediaType.MULTIPART_FORM_DATA)
Este serviço recebe o e-mail e suas opções para envio. Suporta anexos.
Path: N/A.
Query: N/A.
Body: JSON contendo a entidade Mail;
Response: Uma cópia da entidade Mail em formato JSON.
Bloco de código | ||||
---|---|---|---|---|
| ||||
http://<server>:8080/dts/datasul-mail/resources/send/ |
Âncora | ||||
---|---|---|---|---|
|
Painel | ||||
---|---|---|---|---|
| ||||
O objeto Mail, encaminhado no corpo das requisições, possui a seguinte estrutura:
|
Dica |
---|
|
Recursos Disponíveis
...
Para mais informações de quais são os recursos disponíveis quanto a esta opção de envio, consultar o link: Envio de E-mail Datasul.
API Progress
A API a ser utilizada no progress é a utapi019.p que está preparada para enviar e-mails de acordo com a configuração indicada no programa 'Parâmetros Email Foundation' (btb962zb).
Para mais informações sobre como utilizar a API utapi019 acesse Utilização de API de envio de e-mail.
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
{utp\utapi019.i2}
RUN utp/utapi019.p PERSISTENT SET h-utapi019.
create tt-envio2.
assign tt-envio2.versao-integracao = 1
tt-envio2.exchange = NO
tt-envio2.servidor = 'smtp.totvs.com.br'
tt-envio2.porta = 587
tt-envio2.destino = "[email protected]"
tt-envio2.remetente = "[email protected]"
tt-envio2.assunto = "Datasul Mail Service"
tt-envio2.mensagem = "Hello from the other side !"
tt-envio2.importancia = 2
tt-envio2.log-enviada = NO
tt-envio2.log-lida = NO
tt-envio2.acomp = NO
tt-envio2.formato = 'html'.
CREATE tt-mensagem.
ASSIGN tt-mensagem.mensagem = tt-envio2.mensagem.
caso não sejam informados os campos da tabela tt-paramEmail2, serão utilizados as configurações dos parâmetros de email foundation */
CREATE tt-paramEmail2.
ASSIGN tt-paramEmail2.caminhoEmail = 5
tt-paramEmail2.mailUser = '<user_email>'
tt-paramEmail2.mailPass = '<senha_email>'
tt-paramEmail2.TLS = NO
tt-paramEmail2.SSL = NO
tt-paramEmail2.DEBUG = YES.
CREATE ttAttachment.
ASSIGN ttAttachment.fileName = '<nome_arquivo>'.
COPY-LOB FROM FILE ttAttachment.FILENAME TO ttAttachment.fileContent NO-CONVERT NO-ERROR. /* caso esteja disponível apenas o binário do arquivo, basta atribui-lo ao campo ttAttachment.fileContent */
RUN pi-execute4 IN h-utapi019 (INPUT Table tt-envio2,
INPUT Table tt-mensagem,
INPUT Table tt-paramEmail2,
INPUT TABLE ttAttachment,
OUTPUT Table tt-erros).
if return-value = "NOK" then do:
for each tt-erros:
disp tt-erros with 1 column width 300.
end.
end. |
API Javascript
Está é a API para utilização nos projetos utilizando THF e está disponível em forma de um serviço nomeado como 'MailService'. Para utilizá-lo, basta injetar o MailService no construtor do seu controller.
Sua principal função é realizar os envios de e-mail a partir de programas HTML, abstraindo a chamada REST (utilizando o Datasul Rest) para a API utapi019, que centraliza qualquer envio de e-mail, tornando a configuração de envio de e-mails única.
O MailService disponibiliza 2 métodos para realizar o envio de e-mail, contendo as seguintes assinaturas:
Painel | ||||
---|---|---|---|---|
| ||||
|
Painel | ||||
---|---|---|---|---|
| ||||
|
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
var controller;
controller = function ($rootScope, $scope, MailService) {
this.sendEmail = funcion() {
MailService.send({
reply: "[email protected]",
mailTo: "[email protected]",
cc: "[email protected]",
subject: "Datasul Mail Service",
content: "Hello from the other side !"
}, function(result) {
console.info(result);
});
};
};
controller.$inject = ['$rootScope', '$scope', 'MailService']; |
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
var controller;
controller = function ($rootScope, $scope, MailService) {
this.onSelectFiles = function(selectedFiles) {
if (angular.isDefined(selectedFiles)) {
this.sendEmail(selectedFiles);
}
};
this.sendEmail = funcion(files) {
MailService.sendWithAttachment({
reply: "[email protected]",
mailTo: "[email protected]",
cc: "[email protected]",
subject: "Datasul Mail Service",
content: "Hello from the other side !"
}, files,
function(result, mail) {
console.info(result, mail);
}, function(progress, evt, mail) {
console.warn(progress, evt, mail);
}, function(result, status, headers, config, email) {
console.error(result, status, headers, config, email);
});
};
};
controller.$inject = ['$rootScope', '$scope', 'MailService']; |
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<html>
<head></head>
<body>
<label class="btn btn-default pull-right"
role="button"
for="file-input">
Selecione os arquivos...
</label>
<span class="file-text"></span>
<input id="file-input"
type="file"
style="position:fixed;top:-999px;"
ngf-select
ngf-change="controller.onSelectFiles($files);"
ngf-multiple="true"
ngf-allow-dir="false"/>
</body>
</html> |
...
- m_response: (MEMPTR): entidade Mail em formato JSON, ou erro em caso de algum problema na execução;
- i_response_code: (INTEGER): código do status de resposta da chamada REST ao serviço;
- c_response_status: (CHARACTER): descrição do status de resposta da chamada REST ao serviço.
Dica |
---|
Internamente esta API utiliza a API utp/ut-http-api.p para realizar as chamadas REST ao Datasul Mail Service. |
Dica |
---|
Tanto para montagem do conteúdo do e-mail como para adicionar o conteúdo do arquivo a TEMP-TABLE de anexos, utilize o comando COPY-LOB. No caso do conteúdo do e-mail utilize a opção NO-CONVERT para evitar problemas com charset; por padrão o Datasul Mail Service utiliza o encode UTF-8. Na sessão de exemplos é possível verificar como realizar as operações. |
API Javascript
Está é a API para utilização nos projetos com o TFH.
A API está disposta em forma de um service através do nome: 'MailService'.
Sua principal função é abstrair a chamada REST para o serviço do Datasul Mail Service, desta forma ela possui apenas 2 métodos com as seguintes assinaturas:
...
- email: contendo o objeto Mail;
- files: anexo ou lista de arquivos anexos obtidos através do seletor de arquivos do navegador;
- callback: função a ser chamada quando terminar o processo.
- callbackProgress: função que devolve o '%' de progresso do envio dos anexos para o serviço, o evento retornado pelo server a entidade de Mail relacinada ao anexo;
- callbackError: função a ser chamada caso ocorra algum erro inesperado.
Exemplos
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
var controller;
controller = function ($rootScope, $scope, MailService) {
this.sendEmail = funcion() {
MailService.send({
from: "[email protected]",
fromName: "Jhon Doe",
to: ["[email protected]"],
cc: ["[email protected]"],
subject: "Datasul Mail Service",
content: "Hello from the other side !"
}, function(result) {
console.info(result);
});
};
};
controller.$inject = ['$rootScope', '$scope', 'MailService']; |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
var controller;
controller = function ($rootScope, $scope, MailService) {
this.onSelectFiles = function(selectedFiles) {
if (angular.isDefined(selectedFiles)) {
this.sendEmail(selectedFiles);
}
};
this.sendEmail = funcion(files) {
MailService.sendWithAttachment({
from: "[email protected]",
fromName: "Jhon Doe",
to: ["[email protected]"],
cc: ["[email protected]"],
subject: "Datasul Mail Service",
content: "Hello from the other side !"
}, files,
function(result, mail) {
console.info(result, mail);
}, function(progress, evt, mail) {
console.warn(progress, evt, mail);
}, function(result, status, headers, config, email) {
console.error(result, status, headers, config, email);
});
};
};
controller.$inject = ['$rootScope', '$scope', 'MailService'];
------------------------------------------------------------------------------------
<html>
<head></head>
<body>
<label class="btn btn-default pull-right"
role="button"
for="file-input">
Selecione os arquivos...
</label>
<span class="file-text"></span>
<input id="file-input"
type="file"
style="position:fixed;top:-999px;"
ngf-select
ngf-change="controller.onSelectFiles($files);"
ngf-multiple="true"
ngf-allow-dir="false"/>
</body>
</html> |
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
DEFINE VARIABLE h_mail AS HANDLE NO-UNDO.
IF NOT VALID-HANDLE(h_mail) THEN DO:
RUN utp/ut-mail-api.p PERSISTENT SET h_mail.
END.
DEFINE VARIABLE c_to AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_cc AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_bcc AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_subject AS CHARACTER NO-UNDO INITIAL 'Teste API Progress - Datasul Mail Service':U.
DEFINE VARIABLE c_from AS CHARACTER NO-UNDO INITIAL '[email protected]':U.
DEFINE VARIABLE c_from_name AS CHARACTER NO-UNDO INITIAL 'Datasul Mail Service':U.
DEFINE VARIABLE lc_content_mail AS LONGCHAR NO-UNDO.
DEFINE VARIABLE l_html AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE c_read_notification AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE i_delivery_notification AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE i_return_type AS LOGICAL NO-UNDO INITIAL TRUE.
ASSIGN lc_content_mail = 'Teste de envio de e-mail pelo PROGRESS :D':U.
EXTENT (c_to) = 1.
ASSIGN c_to[1] = '[email protected]':U.
RUN sendSimple IN h_mail(
INPUT c_to,
INPUT c_cc,
INPUT c_bcc,
INPUT c_subject,
INPUT c_from,
INPUT c_from_name,
INPUT lc_content_mail,
INPUT l_html,
OUTPUT mptr_response,
OUTPUT i_response_code,
OUTPUT c_response_status
).
IF VALID-HANDLE(h_mail) THEN DO:
DELETE PROCEDURE h_mail.
END. |
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
{utp/ut-mail-api.i}
DEFINE VARIABLE h_mail AS HANDLE NO-UNDO.
IF NOT VALID-HANDLE(h_mail) THEN DO:
RUN utp/ut-mail-api.p PERSISTENT SET h_mail.
END.
DEFINE VARIABLE c_to AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_cc AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_bcc AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_subject AS CHARACTER NO-UNDO INITIAL 'Teste API Progress - Datasul Mail Service':U.
DEFINE VARIABLE c_from AS CHARACTER NO-UNDO INITIAL '[email protected]':U.
DEFINE VARIABLE c_from_name AS CHARACTER NO-UNDO INITIAL 'Datasul Mail Service':U.
DEFINE VARIABLE lc_content_mail AS LONGCHAR NO-UNDO.
DEFINE VARIABLE l_html AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE c_read_notification AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE i_delivery_notification AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE i_return_type AS LOGICAL NO-UNDO INITIAL TRUE.
ASSIGN lc_content_mail = 'Teste de envio de e-mail pelo PROGRESS :D':U.
EXTENT (c_to) = 1.
ASSIGN c_to[1] = '[email protected]':U.
CREATE ttAttachment.
ASSIGN ttAttachment.fileName = '<NOME ANEXO 1>'.
COPY-LOB FROM FILE '<CAMINHO ANEXO 1>'
TO ttAttachment.fileContent NO-CONVERT NO-ERROR.
CREATE ttAttachment.
ASSIGN ttAttachment.fileName = '<NOME ANEXO 2>'.
COPY-LOB FROM FILE '<CAMINHO ANEXO 2>'
TO ttAttachment.fileContent NO-CONVERT NO-ERROR.
RUN sendWithAttachment IN h_mail(
INPUT c_to,
INPUT c_cc,
INPUT c_bcc,
INPUT c_subject,
INPUT c_from,
INPUT c_from_name,
INPUT lc_content_mail,
INPUT l_html,
INPUT TABLE ttAttachment,
OUTPUT mptr_response,
OUTPUT i_response_code,
OUTPUT c_response_status
).
IF VALID-HANDLE(h_mail) THEN DO:
DELETE PROCEDURE h_mail.
END. |
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
{utp/ut-mail-api.i}
DEFINE VARIABLE h_mail AS HANDLE NO-UNDO.
IF NOT VALID-HANDLE(h_mail) THEN DO:
RUN utp/ut-mail-api.p PERSISTENT SET h_mail.
END.
DEFINE VARIABLE c_to AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_cc AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_bcc AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_subject AS CHARACTER NO-UNDO INITIAL 'Teste API Progress - Datasul Mail Service':U.
DEFINE VARIABLE c_from AS CHARACTER NO-UNDO INITIAL '[email protected]':U.
DEFINE VARIABLE c_from_name AS CHARACTER NO-UNDO INITIAL 'Datasul Mail Service':U.
DEFINE VARIABLE lc_content_mail AS LONGCHAR NO-UNDO.
DEFINE VARIABLE l_html AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE c_read_notification AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE i_delivery_notification AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE i_return_type AS LOGICAL NO-UNDO INITIAL TRUE.
ASSIGN lc_content_mail = 'Teste de envio de e-mail pelo PROGRESS :D':U.
EXTENT (c_to) = 1.
ASSIGN c_to[1] = '[email protected]':U.
CREATE ttAttachment.
ASSIGN ttAttachment.fileName = '<NOME ANEXO 1>'.
COPY-LOB FROM FILE '<CAMINHO ANEXO 1>'
TO ttAttachment.fileContent NO-CONVERT NO-ERROR.
RUN sendEmail IN h_mail(
INPUT c_to,
INPUT c_cc,
INPUT c_bcc,
INPUT c_subject,
INPUT c_from,
INPUT c_from_name,
INPUT lc_content_mail,
INPUT l_html,
INPUT '[email protected]',
INPUT 1,
INPUT 1,
INPUT TABLE ttAttachment,
OUTPUT mptr_response,
OUTPUT i_response_code,
OUTPUT c_response_status
).
IF VALID-HANDLE(h_mail) THEN DO:
DELETE PROCEDURE h_mail.
END. |
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
/********************************************************************************
/*
* Copyright (c) 2009, TOTVS S/A. Todos os direitos reservados.
*
* Os Programas desta Aplicação (que incluem tanto o software quanto a sua
* documentação) contém informações proprietárias da TOTVS S/A; eles são
* licenciados de acordo com um contrato de licença contendo restrições de uso e
* confidencialidade, e são também protegidos pela Lei 9609/98 e 9610/98,
* respectivamente Lei do Software e Lei dos Direitos Autorais. Engenharia
* reversa, descompilação e desmontagem dos programas são proibidos. Nenhuma
* parte destes programas pode ser reproduzida ou transmitida de nenhuma forma e
* por nenhum meio, eletrônico ou mecânico, por motivo algum, sem a permissão
* escrita da TOTVS S/A.
*
*/
*******************************************************************************/
{include/i-prgvrs.i CRM0001RP 1.00.00.001 } /*** 010001 ***/
{utp/ut-mail-api.i}
{utp/ut-report-api.i}
DEFINE VARIABLE i_ocorrencia AS INTEGER NO-UNDO INITIAL 101552.
DEFINE VARIABLE c_report AS CHARACTER NO-UNDO INITIAL 'crm/rel_ratec_tecnico/':U.
DEFINE VARIABLE c_program AS CHARACTER NO-UNDO INITIAL 'program=/report/crm/crm0001':U.
DEFINE VARIABLE c_format AS CHARACTER NO-UNDO INITIAL 'html':U.
DEFINE VARIABLE c_dialect AS CHARACTER NO-UNDO INITIAL 'pt':U.
DEFINE VARIABLE l_publish AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE l_download AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE h_api AS HANDLE NO-UNDO.
DEFINE VARIABLE h_mail AS HANDLE NO-UNDO.
DEFINE VARIABLE h_report AS HANDLE NO-UNDO.
DEFINE VARIABLE lc_content AS LONGCHAR NO-UNDO.
DEFINE VARIABLE c_query_params AS CHARACTER NO-UNDO.
DEFINE VARIABLE i_response_code AS INTEGER NO-UNDO.
DEFINE VARIABLE c_response_status AS CHARACTER NO-UNDO.
DEFINE VARIABLE mptr_response AS MEMPTR NO-UNDO.
/* ************************************************** */
/* *** Busca os dados para impressão do relatório *** */
/* ************************************************** */
ASSIGN c_query_params = '&num_id_ocor=':U + STRING(i_ocorrencia).
IF NOT VALID-HANDLE(h_api) THEN DO:
RUN report/crm/crm0001.p PERSISTENT SET h_api.
END.
RUN getReportDataRPW IN h_api(INPUT TABLE ttReport, INPUT i_ocorrencia, OUTPUT lc_content, OUTPUT TABLE RowErrors).
IF VALID-HANDLE(h_api) THEN DO:
DELETE PROCEDURE h_api.
END.
/* ************************************************** */
/* *** Realiza a chamada para o Datasul Report *** */
/* ************************************************** */
IF NOT VALID-HANDLE(h_report) THEN DO:
RUN utp/ut-report-api.p PERSISTENT SET h_report.
END.
RUN print IN h_report (
INPUT c_report,
INPUT c_program,
INPUT c_format,
INPUT c_dialect,
INPUT l_publish,
INPUT l_download,
INPUT lc_content,
INPUT c_query_params,
OUTPUT mptr_response,
OUTPUT i_response_code,
OUTPUT c_response_status
).
IF VALID-HANDLE(h_report) THEN DO:
DELETE PROCEDURE h_report.
END.
IF i_response_code EQ 200 AND mptr_response NE ? THEN DO:
/* ************************************************** */
/* *** Agora enviamos por e-mail o HTML gerado *** */
/* ************************************************** */
IF NOT VALID-HANDLE(h_mail) THEN DO:
RUN utp/ut-mail-api.p PERSISTENT SET h_mail.
END.
DEFINE VARIABLE c_to AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_cc AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_bcc AS CHARACTER NO-UNDO EXTENT.
DEFINE VARIABLE c_subject AS CHARACTER NO-UNDO INITIAL 'Teste API Progress - Datasul Mail Service':U.
DEFINE VARIABLE c_from AS CHARACTER NO-UNDO INITIAL '[email protected]':U.
DEFINE VARIABLE c_from_name AS CHARACTER NO-UNDO INITIAL 'Datasul Mail Service':U.
DEFINE VARIABLE lc_content_mail AS LONGCHAR NO-UNDO.
DEFINE VARIABLE l_html AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE c_read_notification AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE i_delivery_notification AS LOGICAL NO-UNDO INITIAL TRUE.
DEFINE VARIABLE i_return_type AS LOGICAL NO-UNDO INITIAL TRUE.
COPY-LOB FROM mptr_response TO lc_content_mail NO-CONVERT NO-ERROR.
EXTENT (c_to) = 1.
ASSIGN c_to[1] = '[email protected]':U.
CREATE ttAttachment.
ASSIGN ttAttachment.fileName = '<NOME ANEXO 1>'.
COPY-LOB FROM FILE '<CAMINHO ANEXO 1>'
TO ttAttachment.fileContent NO-CONVERT NO-ERROR.
RUN sendEmail IN h_mail(
INPUT c_to,
INPUT c_cc,
INPUT c_bcc,
INPUT c_subject,
INPUT c_from,
INPUT c_from_name,
INPUT lc_content_mail,
INPUT l_html,
INPUT '[email protected]',
INPUT 1,
INPUT 1,
INPUT TABLE ttAttachment,
OUTPUT mptr_response,
OUTPUT i_response_code,
OUTPUT c_response_status
).
IF VALID-HANDLE(h_mail) THEN DO:
DELETE PROCEDURE h_mail.
END.
END. |