Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Para mais informações sobre como utilizar a API utapi019, utilize a documentação disponível na página 'Utilização de API de envio de e-mail'.

API Javascript

Está é a API para utilização nos projetos com o THF.

A API está disponível em forma de um service através do nome '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 todo e qualquer envio de e-mail, tornando a configuração de envio de e-mails única.

O MailService dispõe de 2 métodos para serem utilizados para realizar o envio de e-mail, contendo 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.

Exemplo

Bloco de código
languagejava
themeEclipse
firstline1
titleProgress: sendWithAttachment
linenumberstrue
collapsetrue
{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 com o THF.

A API está disponível em forma de um service através do nome '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 todo e qualquer envio de e-mail, tornando a configuração de envio de e-mails única.

O MailService dispõe de 2 métodos para serem utilizados para realizar o envio de e-mail, contendo as seguintes assinaturas:

  • send
    • email: contendo o objeto Mail;
    • callback: função a ser chamada quando terminar o processo.

  • sendWithAttachment
    • 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.

Exemplo

Bloco de código
languagejs
titleJavaScript: send
linenumberstrue
collapsetrue
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
languagejs
titleJavaScript: sendWithAttachment
linenumberstrue
collapsetrue
 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].br",
		    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
languagexml
titleHTML: sendWithAttachment
linenumberstrue
collapsetrue
<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>