Índice:

Como enviar e-mails com anexos com Arduino, Esp32 e Esp8266: 6 etapas
Como enviar e-mails com anexos com Arduino, Esp32 e Esp8266: 6 etapas
Anonim
Como enviar e-mails com anexos com Arduino, Esp32 e Esp8266
Como enviar e-mails com anexos com Arduino, Esp32 e Esp8266

Aqui eu gostaria de explicar a versão 2 da minha biblioteca EMailSender, uma grande evolução em relação à versão 1, com suporte para Arduino com w5100, w5200 e w5500 ethernet shield e dispositivos clone enc28J60, e suporte para esp32 e esp8266.

Agora você também pode adicionar anexos, carregados de um dispositivo de armazenamento como SD ou SPIFFS. Aqui o uso de ethernet Arduino.

Suprimentos

  • Arduino Mega
  • enc28J60
  • cartão SD

Etapa 1: Selecione o dispositivo correto ENC28J60 ou série W5100

Selecione o dispositivo correto da série ENC28J60 ou W5100
Selecione o dispositivo correto da série ENC28J60 ou W5100

Arduino, normalmente, gerencia a rede com dispositivo externo, o dispositivo padrão como w5100 usa biblioteca Ethernet, os clones ENC28J60 têm algumas bibliotecas para selecionar.

Para selecionar o seu dispositivo, você deve ir no arquivo de biblioteca EMailSenderKey.h e definir o correto

#define DEFAULT_EMAIL_NETWORK_TYPE_ARDUINO NETWORK_ENC28J60 // Padrão

A biblioteca carregada para gerenciar este tipo de dispositivo é UIPEthernet, você pode encontrar a biblioteca no gerenciador de bibliotecas do IDE do Arduino

ou você pode alterar o tipo de rede padrão

#define DEFAULT_EMAIL_NETWORK_TYPE_ARDUINO NETWORK_W5100

Esta é a implementação padrão e usa a biblioteca Ethernet.

Uma coisa importante a se considerar é que esse escudo Ethernet não suporta SSL ou TLS, então você deve encontrar um provedor SMTP que ofereça uma conexão SMTP sem esse tipo de inscrição.

Eu crio um tópico no fórum onde você pode adicionar o provedor que você usa, que você pode encontrar o meu também.

Etapa 2: enviar e-mail simples

Enviar Email Simples
Enviar Email Simples

Para enviar um e-mail com o Arduino você deve encontrar um provedor que funcione sem SSL ou TLS, para minha solução eu uso com o provedor SendGrid.

Acho que o uso é muito simples.

Portanto, você deve definir o provedor

EMailSender emailSend ("YOUR-SENDGRID-API-KEY", "YOUR-SENDGRID-PASSWD", "FROM-EMAIL", "smtp.sendgrid.net", 25);

Então você deve criar uma mensagem e enviá-la

EMailSender:: EMailMessage message; message.subject = "Soggetto"; message.message = "Ciao come staiio bene.

EMailSender:: Response resp = emailSend.send ("[email protected]", mensagem);

Serial.println ("Status de envio:");

Serial.println (resp.status);

Serial.println (resp.code); Serial.println (resp.desc);

Etapa 3: Conecte um carrinho SD para gerenciar anexos

Conecte um carrinho SD para gerenciar anexos
Conecte um carrinho SD para gerenciar anexos

Além de enviar anexos, você deve conectar um cartão SD como no esquema, se precisar de mais informações sobre a conexão consulte este artigo "Como usar o cartão SD com esp8266, esp32 e Arduino".

Etapa 4: enviar e-mail com anexos

Para enviar e-mail com anexos você deve encontrar um provedor que suporte essa funcionalidade, meu provedor sendgrid não oferece suporte e GMX o provedor que usei para o teste não oferece mais suporte.

Mas se você encontrar um novo provedor, pode usar este código para anexar os arquivos.

EMailSender:: FileDescriptior fileDescriptor [1]; fileDescriptor [0].filename = F ("test.txt"); fileDescriptor [0].url = F ("/ test.txt"); fileDescriptor [0].mime = MIME_TEXT_PLAIN; fileDescriptor [0].encode64 = false; fileDescriptor [0].storageType = EMailSender:: EMAIL_STORAGE_TYPE_SD;

EMailSender:: Attachments attachs = {1, fileDescriptor};

EMailSender:: Response resp = emailSend.send ("[email protected]", mensagem, anexos);

Etapa 5: o resultado

O resultado
O resultado

Aqui o e-mail enviado com um provedor esp8266 e GMail (para usar o GMail você deve enviar um programa externo).

Etapa 6: Biblioteca

Você pode encontrar a biblioteca no GitHub

E você deve perguntar sobre recursos ou relatar bugs no Fórum

Documentação adicional aqui.

Recomendado: