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
...
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) na , aba 'Servidor'. Para mais informações acesse Configurar Aba Servidor (BTB946AA).
- Configurar os parâmetros de para envio de e-mail no 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 |
---|
|
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 | ||||
---|---|---|---|---|
| ||||
|
...
|
...
|
Exemplos
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
var controller; controller = function ($rootScope, $scope, MailService) { this.sendEmail = funcion() { MailService.send({ reply: "[email protected]", alias: "[email protected]", tomailTo: "[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]", alias: "[email protected]", tomailTo: "[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> |
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> | ||||||||||||
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 = 1
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. |