ESP8266: Como enviar e-mail por um servidor SMTP

Para a versão que usa SSL/TLS, veja este post.

Este código é um aperfeiçoamento do código apresentado aqui.

Testado com IDE 1.8.1 e ESP8266 Core v2.3.0

Melhorias:

  • Não é preciso pré-codificar usuário e senha em base64. Eu inclui as rotinas para isso;
  • Removi o uso de flash strings, que aparentemente era a causa da rotina demorar absurdamente em certos pontos;
  • Usei constantes no lugar de strings “hardcoded”;

Versão que prefiro

Eu criei esta versão porque preferia uma rotina de envio mais “limpa” e o log na porta serial feito de forma a representar com mais fidelidade a comunicação com o servidor.

 

  1. Marco Otávio Souza Mello’s avatar

    Nessa segunda versão, se você rodar várias vezes enviando e-mails, de tempos em tempos, em certo momento a memória vai estourar por conta do malloc, pra resolver é só desalocar no fim da função.

    Responder

    1. Jefferson’s avatar

      Desculpe a demora para aprovar seu comentário e obrigado pela dica!

      Responder

    2. Jefferson’s avatar

      Para resolver o problema indicado por Marco é preciso incluir uma linha:

      free(buf);

      no(s) lugar(es) apropriado(s) da função sendEmail().

      Não exatamente no fim da função, pois esta pode terminar em qualquer ponto onde há um “return”. Eu só vou corrigir a listagem do programa quando eu tiver tempo para voltar a esse problema e testar no ESP8266.

      Responder

      1. Marcus Guedes’s avatar

        Ola Jefferson. Parabéns pela iniciativa. Já fez a atualização do código?

        Responder

      2. zeh sobrinho’s avatar

        gostei da leveza.
        hoje zap nodemcu envolve 8 boletos de micro serviços pra cobrir a falta que faz uma interface/api graphql de alto nivel as custas de trampo de baixo nivel que nao vai aparecer.

        Responder

      3. zeh sobrinho’s avatar

        claro, td em 20 ou menos linhas.

        Responder

Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *