Configurar o Outlook para envio de e-mails por aplicativos de terceiros é fundamental para integrar sistemas de automação. Este artigo orienta como realizar essa configuração de forma segura e eficiente, garantindo compatibilidade com os padrões do Outlook.

Demonstração 

 

Fique atento, pois a configuração no sistema será liberada a partir da versão 6.1503!


Introdução

Para que o envio de e-mail funcione de forma adequada dentro do WSHOP através do provedor Outlook (Hotmail), é necessário seguir os seguintes passos:

  1. É necessário ter acesso à sua conta do Outlook, e em seguida, realizar o cadastro e acesso no portal Microsoft Azure (https://portal.azure.com/);
  2. Na tela inicial do Azure, acesse Gerenciar o Microsoft Entra ID;
  3. Agora na aba Visão geral, clique em Adicionar → Registro do aplicativo;
  • Durante o registro, o cliente pode precisar cadastrar um cartão de crédito.

  • Atualmente, a Microsoft cobra uma taxa de R$ 6,00  para fins de validação.

1° Passo 

2° Passo 

3° Passo 


Registrando o aplicativo

1° Passo 

2° Passo 

3° Passo 

4° Passo 

Registre e configure os aplicativos de terceiros que terão acesso ao envio de e-mail:

  1. No campo Nome, informe um nome sugestivo que facilite a identificação (exemplo ALTERDATA EMAIL);
  2. Em Tipos de conta com suporte, selecione a terceira opção, conforme demonstra a imagem;

  3. No campo de URI de redirecionamento marque a opção “Cliente público/nativo (móvel e área de trabalho)” e ao lado utilize a URI: https://oauth.pstmn.io/v1/browser-callback;
  4. Clique em Registrar para finalizar o cadastro.

 Se a URL inserida não for exatamente igual a https://oauth.pstmn.io/v1/browser-callbacka aplicação não irá funcionar!!!


Configurando o aplicativo

Após registrar o aplicativo realize a seguinte configuração:

  1. Na tela inicial após cadastrar o aplicativo, clique na aba Gerenciar → Autenticação;
  2. Em autenticação, desça toda página e localize as Configurações avançadas e habilite as duas opções existentes conforme imagem;
  3. Após, clique em Salvar.
1° Passo

2° Passo

3° Passo

Localizando o ClienteID

Após o registro do aplicativo, vamos encontrar o ClienteID que será utilizado no WSHOP.

Para localizá-lo, acesse o gerenciador do aplicativo, na aba Visão geralencontre o campo ID do Aplicativo (cliente):

Configurando o WSHOP

Com todos os passos realizados no Microsoft Azure, agora vamos finalizar a configuração de envio de e-mail dentro do WSHOP:

  1. No WSHOP wshop, acesse a aba Configurações e Manutenção → Gerenciador de E-mails;
  2. Clique no botão Gerenciar contas;
  3. Vá em Novo para criar uma nova conta ou em Editar, caso você já tenha a conta Outlook registrada;
  4. No campo Provedor, selecione uma das opções Microsoft, baseado no seu e-mail (outlook.com, outlook.com.br ou hotmail.com);
  5. Após esse processo, vincule corretamente o E-mail e Conta de e-mail com seu e-mail Outlook, no campo Cliente ID informe o código disponível no site da Microsoft Azure e em seguida Gerar Token;
  6. Após gerar o token, o sistema redirecionará a página para que você autorize o WSHOP a enviar e-mails por meio da Microsoft. É essencial conceder essa autorização para concluir a configuração;
  7. A autenticação será finalizada e você verá uma imagem de confirmação;
4° Passo

5° Passo

 

6° Passo

7° Passo

 


Autor do artigo: Kenji.uca

(Não remova esse quadro)

Descreva o passo a passo para o cliente seguindo os padrões de escrita de artigos, como

  1. Escreva na voz ativa,
  2. Numere o passo a passo,
  3. Evite utilização de imagens,
  4. Escreva no tempo presente, na primeira pessoa e no imperativo (em passo a passos).


Essas informações não se tornam parte do conteúdo em sua nova página, elas ficam ocultas e só aparecem para usuário logado e se o artigo/dica estiver em modo de edição!

<div id="text-end"></div>




<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-193974933-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag2(){dataLayer.push(arguments);}
  gtag2('js', new Date());

  gtag2('config', 'UA-193974933-1');


  function gtagevents (action,category) {
     console.log(category + ':' + action);
     gtag2('event',action,{event_category:category,event_label: document.title});
  };

</script>

<script src="https://player.vimeo.com/api/player.js"></script>
<script>
    (function(){
        // RASTREIO DE USO DO VÍDEO
        function gtagvideo(action){
           gtagevents(action,'Video')
        }

        var iframe = document.querySelector('iframe');
        var player = new Vimeo.Player(iframe);

        var seeking = false;
        var priorTime = 0;
        var currentTime = 0;
        var reportouFinalDoConteudo = false;

        // se pausar o play é acionado também.
        player.on('play', function(data) {
            if(data.seconds == 0){ 
              gtagvideo('video-iniciado');
            }
            priorTime = data.seconds;             
        });

        player.on('ended', function() {
            gtagvideo('video-finalizado');
        });

        //seeking e timeupdate são disparados juntos, logo o tempo dos 2 é atualizado também. Preciso garantir que a variavel starttime seja atualizada ordenadamente (sempre antes ou após o seeking).
        // pra isso preciso setar uma variavel no timeupdate e ler no seeking para garantir a ordem. Se ela estiver false será alterada na próxima iteração.
        player.on('seeking', function(data) {               
            seeking = true;
        });


        player.on('pause',function(data){
            gtagvideo('video-pausado');    
        });

        player.on('timeupdate', function(data) {
            if(seeking){
                if(currentTime < priorTime){
                    gtagvideo('video-voltando');    
                }
                if(currentTime > priorTime){
                    gtagvideo('video-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = data.seconds;


           var finalDoConteudo = (data.duration - data.seconds) < 5;
           if(finalDoConteudo && !reportouFinalDoConteudo){
            gtagvideo('conteudo-finalizado')
            reportouFinalDoConteudo = true;
           }
        });

        player.on('fullscreenchange', function() {
            gtagvideo('video-fullscreen');
        });
    })();
</script>

<script>
 // RASTREIO DO USO DE AUDIO
 (function(){
    function gtagaudio(action){
           gtagevents(action,'Audio')
    }            

    var audio = document.querySelector("audio");

    var seeking = false;
    var priorTime = 0;
    var currentTime = 0;

    audio.addEventListener('play',function(){
        if(audio.currentTime == 0){
          gtagaudio('audio-iniciado');
        }
        priorTime = audio.currentTime;        
    });

    audio.addEventListener('ended',function(){
        gtagaudio('audio-finalizado');
    });

    audio.addEventListener('pause',function(){
        gtagaudio('audio-pausado');
    });

    audio.addEventListener('seeking', function(data) {               
        seeking = true;
    });

    audio.addEventListener('timeupdate', function(data) {               
        if(seeking){
                if(currentTime < priorTime){
                    gtagaudio('audio-voltando');    
                }
                if(currentTime > priorTime){
                    gtagaudio('audio-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = audio.currentTime;
    });    
 })();
 </script>

<script>
    (function(){
        var terminou = false;
        //RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
        document.addEventListener('scroll',() => {
            if(document.getElementById('text-end').getBoundingClientRect().top < window.innerHeight){
                if(!terminou){
                    terminou = true;
                    gtagevents('artigo-lido','Pagina')
                }
            }else{
                terminou = false;
            }
                
        });
    })();
 </script>