Histórico da Página
...
- No aquivo datasul_framework.properties preencher as propriedades com seus respectivos valores:
- mail.smtp.sender: (string): E-mail do usuário da conta indicado para o envio de e-mail;
- mail.smtp.user: (string): Usuário da conta que irá realizar o envio de e-mail;
- 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'.
- mail.smtp.pass: (string): Senha da conta que irá realizar o envio de e-mail;
- mail.smtp.host: (string): Endereço do serviço de e-mail;
- mail.smtp.port: (integer): Porta do serviço de e-mail;
- mail.smtp.ssl.enable: (true/false): Habilita o suporte a SMTPS caso o servidor de e-mail esteja com HTTPS (SSL) habilitado;
- mail.smtp.starttls.enable: (true/false): Habilita o suporte ao TLS;
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#+----------------------------------------------------------+ #| DATASUL MAIL | #+----------------------------------------------------------+ # E-mail do usuário da conta indicado para o envio de e-mail. [email protected] # Usuário e senha da conta que irá realizar o envio de e-mail. mail.smtp.user=jhon.doe mail.smtp.pass=minhasenhasuperdificil@321 # 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 # Habilita o DEBUG da API do JAVA MAIL. mail.smtp.debug.enable=true |
...
- @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).
- @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.
Exemplo: http://cordas:8480/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.
Exemplo: http://cordas:8480/dts/datasul-mail/resources/send/
...
- subject: (string) assunto do e-mail;
- content: (string) conteúdo do e-mail, podendo ser HTML;
- fromreplay: (string) (opcional) endereço de e-mail do remetente da mensagemque receberá a resposta do e-mail enviado;
- fromNamealias: (string) (opcional) caso queira utilizar um 'apelido' para sobrepor o endereço de e-mail do remetente (conta do sistema utilizada para envio da mensagem);
- 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;
- priority: (integer) (opcional): prioridade do e-mail:
- 1: Alta;
- 3: (default) Normal;
- 5: Baixa.
...
- sendSimple: Destina-se ao envio de um e-mail simples.
- INPUT
- c_to: (CHARACTER EXTENT): lista contendo os endereços de destinatários;
- c_cc: (CHARACTER EXTENT): (opcional) lista contendo os endereços de destinatários a receberem a cópia do e-mail;
- c_bcc: (CHARACTER EXTENT): (opcional) lista contendo os endereços de destinatários a receberem a cópia oculta do e-mail;
- c_subject: (CHARACTER): assunto do e-mail;
- c_replay_fromto: (CHARACTER): (opcional) endereço de e-mail do remetente da mensagemque receberá a resposta do e-mail enviado;
- c_from_namealias: (CHARACTER): (opcional) caso queira utilizar um 'apelido' para sobrepor o endereço de e-mail do remetente (conta do sistema utilizada para envio da mensagem);
- lc_content: (LONGCHAR): conteúdo do e-mail;
- l_html: (LOGICAL): indica se o conteúdo do e-mail será um HTML.
- OUTPUT
- 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.
- INPUT
- sendWithAttachment: Destina-se ao envio de um e-mail simples com anexos. Para utilização dos anexos é preciso adicionar a include utp/ut-mail-api.i para ter acesso a ttAttachment.
- INPUT
- c_to: (CHARACTER EXTENT): lista contendo os endereços de destinatários;
- c_cc: (CHARACTER EXTENT): (opcional) lista contendo os endereços de destinatários a receberem a cópia do e-mail;
- c_bcc: (CHARACTER EXTENT): (opcional) lista contendo os endereços de destinatários a receberem a cópia oculta do e-mail;
- c_subject: (CHARACTER): assunto do e-mail;
- c_fromreplay_to: (CHARACTER): endereço (opcional) endereço de e-mail do remetente da mensagemque receberá a resposta do e-mail enviado;
- c_from_namealias: (CHARACTER): (opcional) caso queira utilizar um 'apelido' para sobrepor o endereço de e-mail do remetente (conta do sistema utilizada para envio da mensagem);
- lc_content: (LONGCHAR): conteúdo do e-mail;
- l_html: (LOGICAL): indica se o conteúdo do e-mail será um HTML.
- ttAttachment: (TEMP-TABLE):
- fileName: (CHARACTER): nome do arquivo;
- fileType: (CHARACTER): tipo do arquivo, caso não seja informado o serviço vai tentar descobrir com base na extensão do arquivo;
- fileContent: (BLOB): conteúdo binário do arquivo.
- OUTPUT
- 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.
- INPUT
- sendEmail: Destina-se ao envio de e-mail com solicitação de entrega e outros.
- INPUT
- c_to: (CHARACTER EXTENT): lista contendo os endereços de destinatários;
- c_cc: (CHARACTER EXTENT): (opcional) lista contendo os endereços de destinatários a receberem a cópia do e-mail;
- c_bcc: (CHARACTER EXTENT): (opcional) lista contendo os endereços de destinatários a receberem a cópia oculta do e-mail;
- c_subject: (CHARACTER): assunto do e-mail;
- c_replay_fromto: (CHARACTER): endereço (opcional) endereço de e-mail do remetente da mensagemque receberá a resposta do e-mail enviado;
- c_from_namealias: (CHARACTER): (opcional) caso queira utilizar um 'apelido' para sobrepor o endereço de e-mail do remetente (conta do sistema utilizada para envio da mensagem);
- lc_content: (LONGCHAR): conteúdo do e-mail;
- l_html: (LOGICAL): indica se o conteúdo do e-mail será um HTML;
- c_read_notification: (CHARACTER): caso tenha sido informado um endereço válido para este atributo, este receberá uma notificação de que o e-mail foi lido;
- i_delivery_notification: (INTEGER): indica o tipo de notificação que o remetente gostaria de receber;
- i_return_type: (INTEGER): indica como deve ser o retorno em caso do envio retornar alguma confirmação ou erro;
- i_priority: (INTEGER): prioridade do e-mail;
- ttAttachment: (TEMP-TABLE):
- fileName: (CHARACTER): nome do arquivo;
- fileType: (CHARACTER): tipo do arquivo, caso não seja informado o serviço vai tentar descobrir com base na extensão do arquivo;
- fileContent: (BLOB): conteúdo binário do arquivo.
- OUTPUT
- 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.
- INPUT
...
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
var controller; controller = function ($rootScope, $scope, MailService) { this.sendEmail = funcion() { MailService.send({ fromreplay: "[email protected]", fromNamealias: "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({ fromreplay: "[email protected]", fromNamealias: "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 _replay_to AS CHARACTER NO-UNDO INITIAL '[email protected]':U. DEFINE VARIABLE c_from_name alias 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. 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_replay_fromto, INPUT c_from_namealias, 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_replay_fromto AS CHARACTER NO-UNDO INITIAL '[email protected]':U. DEFINE VARIABLE c_from_name alias 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. 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_replay_fromto, INPUT c_from_namealias, 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 replay_to AS CHARACTER NO-UNDO INITIAL '[email protected]':U. DEFINE VARIABLE c_from_namealias 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. 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_replay_fromto, INPUT c_from_namealias, INPUT lc_content_mail, INPUT l_html, INPUT '[email protected]', INPUT 1, /* Notificar: -1. Nunca 1. Sucesso 2. Falha 3. Atraso */ INPUT 1, /* Tipo de Retorno: 1. Completo 2. Cabeçalho */ INPUT 1, /* Prioridade: 1. Alta 3. Normal 5. Baixa */ 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} {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_replay_from to AS CHARACTER NO-UNDO INITIAL '[email protected]':U. DEFINE VARIABLE c_from_namealias 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. 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_fromreplay_to, INPUT c_from_namealias, INPUT lc_content_mail, INPUT l_html, INPUT '[email protected]', INPUT 1, /* Notificar: -1. Nunca 1. Sucesso 2. Falha 3. Atraso */ INPUT 1, /* Tipo de Retorno: 1. Completo 2. Cabeçalho */ INPUT 1, /* Prioridade: 1. Alta 3. Normal 5. Baixa */ 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. |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas