ESP32 Envoyer des e-mails à l’aide du serveur SMTP : HTML, texte, pièces jointes (Arduino IDE)

ESP32 Envoyer des e-mails à l'aide du serveur SMTP : HTML, texte, pièces jointes (Arduino IDE)

Apprenez à envoyer des e-mails avec l’ESP32 à l’aide d’un serveur SMTP. Nous vous montrerons comment envoyer un simple e-mail avec du HTML ou du texte brut et comment envoyer des pièces jointes comme des images et des fichiers (.SMS). le carte ESP32 sera programmé à l’aide d’Arduino IDE.

ESP32 Envoyer des e-mails à l'aide d'un serveur SMTP : HTML, texte et pièces jointes (Arduino IDE)

Dans ce tutoriel, nous abordons les sujets suivants :

Nous avons un tutoriel similaire pour la carte ESP8266 : ESP8266 NodeMCU Envoyer des e-mails à l’aide d’un serveur SMTP : HTML, texte et pièces jointes (Arduino)

Présentation des serveurs SMTP

SMTP veux dire Protocole de transfert de courrier simple et c’est une norme Internet pour la transmission d’e-mails. Pour envoyer des e-mails à l’aide d’un ESP32, vous devez le connecter à un serveur SMTP.

Bibliothèque cliente de messagerie ESP

Pour envoyer des e-mails avec le ESP32, nous utiliserons le Bibliothèque ESP-Mail-Client. Cette bibliothèque permet à l’ESP32 d’envoyer et de recevoir des e-mails avec ou sans pièces jointes via les serveurs SMTP et IMAP.

Dans ce didacticiel, nous utiliserons SMTP pour envoyer un e-mail avec et sans pièces jointes. À titre d’exemple, nous enverrons une image (.png) et un fichier texte (.txt). Les fichiers envoyés par e-mail peuvent être enregistrés dans le système de fichiers ESP32 (SPIFFS) ou sur une carte microSD (non abordé dans ce didacticiel).

Installation de la bibliothèque ESP-Mail-Client

Avant de poursuivre ce didacticiel, vous devez installer le Bibliothèque ESP-Mail-Client. Cette bibliothèque n’est pas disponible pour l’installation via le gestionnaire de bibliothèque IDE Arduino. Suivez les étapes suivantes pour installer la bibliothèque :

  1. Cliquez ici pour télécharger le dossier .zip de la bibliothèque ESP-Mail-Client.
  2. Dans votre IDE Arduino, accédez à Esquisser > Inclure la bibliothèque > Ajouter une bibliothèque .ZIP.
  3. Sélectionnez le .Zip *: français fichier que vous venez de télécharger.

Ensuite, si vous allez à Déposer > Exemples > ESP-Mail-Client, vous trouverez plusieurs exemples que vous pouvez essayer. Vous pouvez également accéder aux exemples dans la page GitHub de la bibliothèque—ici.

Si vous utilisez l’ESP32 avec VS Code + PlatformIO, vous devez copier ce qui suit dans votre platformio.ini fichier pour inclure la bibliothèque.

lib_deps = mobizt/ESP Mail Client @ ^1.3.0

E-mail de l’expéditeur (nouveau compte)

Nous vous recommandons de créer un nouveau compte de messagerie pour envoyer les e-mails à votre adresse e-mail personnelle principale. N’utilisez pas votre messagerie personnelle principale pour envoyer des e-mails via ESP32. Si quelque chose ne va pas dans votre code ou si par erreur vous faites trop de demandes, vous pouvez être banni ou avoir votre compte temporairement désactivé.

Nous utiliserons un compte Gmail.com nouvellement créé pour envoyer les e-mails, mais vous pouvez utiliser n’importe quel autre fournisseur de messagerie. L’e-mail du destinataire peut être votre e-mail personnel sans aucun problème.

Créer un compte de messagerie d’expéditeur

Créez un nouveau compte de messagerie pour envoyer des e-mails avec l’ESP32. Si vous souhaitez utiliser un compte Gmail, allez sur ce lien pour en créer un nouveau.

Gmail Créer un nouveau compte

Autoriser les applications moins sécurisées

Autorisez les applications moins sécurisées à accéder à ce nouveau compte Gmail, afin de pouvoir envoyer des e-mails. Tu peux Ouvrez ce lien pour accéder à ce menu.

Gmail permet aux applications moins sécurisées d'envoyer des e-mails avec ESP32

Paramètres du serveur SMTP de Gmail

Si vous utilisez un compte Gmail, voici les détails du serveur SMTP :

  • Serveur SMTP : smtp.gmail.com
  • Nom d’utilisateur SMTP : adresse Gmail complète
  • Mot de passe SMTP : votre mot de passe Gmail
  • Port SMTP (TLS) : 587
  • Port SMTP (SSL) : 465
  • SMTP TLS/SSL requis : Oui

Paramètres du serveur SMTP Outlook

Pour les comptes Outlook, voici les paramètres du serveur SMTP :

  • Serveur SMTP : smtp.office365.com
  • Nom d’utilisateur SMTP : adresse e-mail Outlook complète
  • Mot de passe SMTP : votre mot de passe Outlook
  • Port SMTP : 587
  • SMTP TLS/SSL requis : Oui

Paramètres du serveur SMTP en direct ou Hotmail

Pour les comptes Live ou Hotmail, voici les paramètres du serveur SMTP :

  • Serveur SMTP : smtp.live.com
  • Nom d’utilisateur SMTP : adresse e-mail complète Live/Hotmail
  • Mot de passe SMTP : votre mot de passe Windows Live Hotmail
  • Port SMTP : 587
  • SMTP TLS/SSL requis : Oui

Si vous utilisez un autre fournisseur de messagerie, vous devez rechercher ses paramètres de serveur SMTP. Maintenant, vous avez tout prêt pour commencer à envoyer des e-mails avec votre ESP32.


Envoyer un e-mail avec HTML ou texte brut avec ESP32 (Arduino IDE)

Le code suivant envoie un e-mail via SMTP Server avec HTML ou texte brut. À des fins de démonstration, l’ESP32 envoie un e-mail une fois au démarrage. Ensuite, vous devriez pouvoir modifier le code et l’intégrer dans vos propres projets.

Ne téléchargez pas encore le code, vous devez apporter quelques modifications pour qu’il fonctionne pour vous.

/*
  Rui Santos
  Complete project details at:
   - ESP32: https://Raspberryme.com/esp32-send-email-smtp-server-arduino-ide/
   - ESP8266: https://Raspberryme.com/esp8266-nodemcu-send-email-smtp-server-arduino/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
  Example adapted from: https://github.com/mobizt/ESP-Mail-Client
*/

//To use send Email for Gmail to port 465 (SSL), less secure app option should be enabled. https://myaccount.google.com/lesssecureapps?pli=1

#include <Arduino.h>
#if defined(ESP32)
  #include <WiFi.h>
#elif defined(ESP8266)
  #include <ESP8266WiFi.h>
#endif
#include <ESP_Mail_Client.h>

#define WIFI_SSID "REPLACE_WITH_YOUR_SSID"
#define WIFI_PASSWORD "REPLACE_WITH_YOUR_PASSWORD"

#define SMTP_HOST "smtp.gmail.com"
#define SMTP_PORT 465

/* The sign in credentials */
#define AUTHOR_EMAIL "[email protected]"
#define AUTHOR_PASSWORD "YOUR_EMAIL_PASS"

/* Recipient's email*/
#define RECIPIENT_EMAIL "[email protected]"

/* The SMTP Session object used for Email sending */
SMTPSession smtp;

/* Callback function to get the Email sending status */
void smtpCallback(SMTP_Status status);

void setup(){
  Serial.begin(115200);
  Serial.println();
  Serial.print("Connecting to AP");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED){
    Serial.print(".");
    delay(200);
  }
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  /** Enable the debug via Serial port
   * none debug or 0
   * basic debug or 1
  */
  smtp.debug(1);

  /* Set the callback function to get the sending results */
  smtp.callback(smtpCallback);

  /* Declare the session config data */
  ESP_Mail_Session session;

  /* Set the session config */
  session.server.host_name = SMTP_HOST;
  session.server.port = SMTP_PORT;
  session.login.email = AUTHOR_EMAIL;
  session.login.password = AUTHOR_PASSWORD;
  session.login.user_domain = "";

  /* Declare the message class */
  SMTP_Message message;

  /* Set the message headers */
  message.sender.name = "ESP";
  message.sender.email = AUTHOR_EMAIL;
  message.subject = "ESP Test Email";
  message.addRecipient("Sara", RECIPIENT_EMAIL);

  /*Send HTML message*/
  String htmlMsg = "<div style="color:#2f4468;"><h1>Hello World!</h1><p>- Sent from ESP board</p></div>";
  message.html.content = htmlMsg.c_str();
  message.html.content = htmlMsg.c_str();
  message.text.charSet = "us-ascii";
  message.html.transfer_encoding = Content_Transfer_Encoding::enc_7bit;

  /*
  //Send raw text message
  String textMsg = "Hello World! - Sent from ESP board";
  message.text.content = textMsg.c_str();
  message.text.charSet = "us-ascii";
  message.text.transfer_encoding = Content_Transfer_Encoding::enc_7bit;
  
  message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_low;
  message.response.notify = esp_mail_smtp_notify_success | esp_mail_smtp_notify_failure | esp_mail_smtp_notify_delay;*/

  /* Set the custom message header */
  //message.addHeader("Message-ID: <[email protected]>");

  /* Connect to server with the session config */
  if (!smtp.connect(&session))
    return;

  /* Start sending Email and close the session */
  if (!MailClient.sendMail(&smtp, &message))
    Serial.println("Error sending Email, " + smtp.errorReason());
}

void loop(){

}

/* Callback function to get the Email sending status */
void smtpCallback(SMTP_Status status){
  /* Print the current status */
  Serial.println(status.info());

  /* Print the sending result */
  if (status.success()){
    Serial.println("----------------");
    ESP_MAIL_PRINTF("Message sent success: %dn", status.completedCount());
    ESP_MAIL_PRINTF("Message sent failled: %dn", status.failedCount());
    Serial.println("----------------n");
    struct tm dt;

    for (size_t i = 0; i < smtp.sendingResult.size(); i++){
      /* Get the result item */
      SMTP_Result result = smtp.sendingResult.getItem(i);
      time_t ts = (time_t)result.timestamp;
      localtime_r(&ts, &dt);

      ESP_MAIL_PRINTF("Message No: %dn", i + 1);
      ESP_MAIL_PRINTF("Status: %sn", result.completed ? "success" : "failed");
      ESP_MAIL_PRINTF("Date/Time: %d/%d/%d %d:%d:%dn", dt.tm_year + 1900, dt.tm_mon + 1, dt.tm_mday, dt.tm_hour, dt.tm_min, dt.tm_sec);
      ESP_MAIL_PRINTF("Recipient: %sn", result.recipients);
      ESP_MAIL_PRINTF("Subject: %sn", result.subject);
    }
    Serial.println("----------------n");
  }
}

Afficher le code brut

Vous devez insérer vos informations d’identification réseau ainsi que définir l’e-mail de l’expéditeur, les détails du serveur SMTP, le destinataire et le message.

Comment fonctionne le code

Ce code est adapté d’un exemple fourni par la bibliothèque. L’exemple est bien commenté afin que vous compreniez ce que fait chaque ligne de code. Jetons simplement un coup d’œil aux pièces pertinentes dont vous avez besoin ou que vous pourriez avoir besoin de changer.

Tout d’abord, insérez vos identifiants réseau dans les lignes suivantes :

#define WIFI_SSID "REPLACE_WITH_YOUR_SSID"
#define WIFI_PASSWORD "REPLACE_WITH_YOUR_PASSWORD"

Insérez les paramètres de votre serveur SMTP. Si vous utilisez un compte Gmail pour envoyer les e-mails, voici les paramètres :

#define SMTP_HOST "smtp.gmail.com"
#define SMTP_PORT 465

Insérez les identifiants de connexion de l’e-mail de l’expéditeur (e-mail complet et mot de passe)

#define AUTHOR_EMAIL "[email protected]"
#define AUTHOR_PASSWORD "YOUR_EMAIL_PASS"

Insérez l’e-mail du destinataire :

#define RECIPIENT_EMAIL "[email protected]"

Définissez les en-têtes de message dans les lignes suivantes dans le mettre en place()—nom de l’expéditeur, e-mail de l’expéditeur, objet de l’e-mail, ainsi que le nom et l’e-mail du destinataire :

/* Set the message headers */
message.sender.name = "ESP";
message.sender.email = AUTHOR_EMAIL;
message.subject = "ESP Test Email";
message.addRecipient("Sara", RECIPIENT_EMAIL);

Dans les lignes suivantes, définissez le contenu du message (texte brut) dans le champ textMsg variable:

//Send raw text message
String textMsg = "Hello World - Sent from ESP board";
message.text.content = textMsg.c_str();
message.text.charSet = "us-ascii";
message.text.transfer_encoding = Content_Transfer_Encoding::enc_7bit;

Si vous souhaitez plutôt envoyer du texte HTML, décommentez les lignes suivantes : vous devez insérer votre texte HTML dans le champ htmlMsg variable.

/*Send HTML message*/
/*String htmlMsg = "<div style="color:#2f4468;"><h1>Hello World!</h1><p>- Sent from ESP board</p></div>";
message.html.content = htmlMsg.c_str();
message.html.content = htmlMsg.c_str();
message.text.charSet = "us-ascii";
message.html.transfer_encoding = Content_Transfer_Encoding::enc_7bit;*/

Enfin, les lignes suivantes envoient le message :

if (!MailClient.sendMail(&smtp, &message))
  Serial.println("Error sending Email, " + smtp.errorReason());

Manifestation

Téléchargez le code sur votre ESP32. Après le téléchargement, ouvrez le moniteur série à un débit en bauds de 115 200. Appuyez sur le bouton de réinitialisation ESP32.

Si tout s’est déroulé comme prévu, vous devriez obtenir un message similaire dans le moniteur série.

ESP Envoyer un message électronique avec succès Serial Monitor

Vérifiez votre compte de messagerie. Vous devriez avoir reçu un email de votre carte ESP32.

Test de réception des e-mails du serveur SMTP ESP32

Si vous définissez l’option pour envoyer un message avec du texte HTML, voici à quoi ressemble le message :

Serveur SMTP ESP32 Envoyer un e-mail au format Corps de texte HTML

Si vous avez activé le message texte brut, c’est l’e-mail que vous devriez recevoir.

Serveur SMTP ESP32 Envoyer un e-mail avec le format de corps de texte uniquement

Envoyer des pièces jointes par e-mail avec ESP32 (Arduino IDE)

Dans cette section, nous allons vous montrer comment envoyer des pièces jointes dans vos e-mails envoyés par l’ESP32. Nous allons montrer comment envoyer .SMS fichiers ou images. Cela peut être utile pour envoyer un .SMS fichier avec les lectures du capteur des dernières heures, ou pour envoyer une photo capturée par un ESP32-CAM.

Pour ce tutoriel, les fichiers à envoyer doivent être enregistrés sur le système de fichiers ESP32 (SPIFFS).

Télécharger des fichiers sur SPIFFS

Pour envoyer des fichiers par e-mail, ceux-ci doivent être enregistrés sur le système de fichiers ESP32 (SPIFFS). Nous allons télécharger une image et un fichier .txt sur l’ESP32 SPIFFS à l’aide du plugin ESP32 Filesystem Uploader pour Arduino IDE. Suivez le tutoriel suivant pour installer le plugin si vous ne l’avez pas encore installé :

Créez une nouvelle esquisse Arduino et enregistrez-la. Aller à Esquisser > Afficher l’esquisse dossier. Dans le dossier d’esquisse Arduino, créez un dossier appelé Les données. Déplacez un fichier .jpg et un fichier .txt vers votre Les données dossier.

Alternativement, vous pouvez cliquez ici pour télécharger le dossier du projet.

Noter: avec le code par défaut, vos fichiers doivent être nommés image.png et fichier_texte.txt. Alternativement, vous pouvez modifier le code pour importer des fichiers avec un nom différent.

Nous enverrons ces des dossiers:

Envoyer des e-mails avec pièces jointes ESP32 ESP8266 Fichier texte et image

Votre structure de dossiers devrait ressembler à ceci (télécharger le dossier du projet):

Envoyer des pièces jointes à un e-mail structure de dossier système de fichiers organisation des fichiers

Après avoir déplacé les fichiers vers le Les données dossier, dans votre IDE Arduino, accédez à Outils > Téléchargement de données d’esquisse ESP32 et attendez que les fichiers soient téléchargés.

ESP32 Sketch Data Upload Arduino IDE SPIFFS FS Filesystem

Vous devriez obtenir un message de réussite dans la fenêtre de débogage. Si les fichiers ont été téléchargés avec succès, passez à la section suivante.

Message de réussite du téléchargement de l'image SPIFFS

Noter: si vous commencez à voir de nombreux points ….____…..____ s’imprimer sur la fenêtre de débogage, vous devez maintenir enfoncé le bouton BOOT intégré de l’ESP32 pour que les fichiers soient téléchargés.

Code

Le code suivant envoie un e-mail avec un .SMS fichier et une photo en pièce jointe. Avant de télécharger le code, assurez-vous d’insérer vos paramètres d’e-mail d’expéditeur et votre e-mail de destinataire.

/*
  Rui Santos
  Complete project details at:
   - ESP32: https://Raspberryme.com/esp32-send-email-smtp-server-arduino-ide/
   
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
  Example adapted K. Suwatchai (Mobizt): https://github.com/mobizt/ESP-Mail-Client Copyright (c) 2021 mobizt
*/

// To use send Email for Gmail to port 465 (SSL), less secure app option should be enabled. https://myaccount.google.com/lesssecureapps?pli=1
// The file systems for flash and sd memory can be changed in ESP_Mail_FS.h.

#include <Arduino.h>
#if defined(ESP32)
  #include <WiFi.h>
#elif defined(ESP8266)
  #include <ESP8266WiFi.h>
#endif
#include <ESP_Mail_Client.h>

#define WIFI_SSID "REPLACE_WITH_YOUR_SSID"
#define WIFI_PASSWORD "REPLACE_WITH_YOUR_PASSWORD"

#define SMTP_HOST "smtp.gmail.com"

/** The smtp port e.g. 
 * 25  or esp_mail_smtp_port_25
 * 465 or esp_mail_smtp_port_465
 * 587 or esp_mail_smtp_port_587
*/
#define SMTP_PORT 465

/* The log in credentials */
#define AUTHOR_EMAIL "[email protected]"
#define AUTHOR_PASSWORD "YOUR_EMAIL_PASS"

/* Recipient's email*/
#define RECIPIENT_EMAIL "[email protected]"
/* The SMTP Session object used for Email sending */

SMTPSession smtp;

/* Callback function to get the Email sending status */
void smtpCallback(SMTP_Status status);

void setup(){
  Serial.begin(115200);
  Serial.println();
  Serial.print("Connecting to AP");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED){
    Serial.print(".");
    delay(200);
  }
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  if (!SPIFFS.begin(true)) {
    Serial.println("An error has occurred while mounting SPIFFS");
  }
  else{
    Serial.println("SPIFFS mounted successfully");
  }

  /** Enable the debug via Serial port
   * none debug or 0
   * basic debug or 1
  */
  smtp.debug(1);

  /* Set the callback function to get the sending results */
  smtp.callback(smtpCallback);

  /* Declare the session config data */
  ESP_Mail_Session session;

  /* Set the session config */
  session.server.host_name = SMTP_HOST;
  session.server.port = SMTP_PORT;
  session.login.email = AUTHOR_EMAIL;
  session.login.password = AUTHOR_PASSWORD;
  session.login.user_domain = "mydomain.net";

  /* Declare the message class */
  SMTP_Message message;

  /* Enable the chunked data transfer with pipelining for large message if server supported */
  message.enable.chunking = true;

  /* Set the message headers */
  message.sender.name = "ESP Mail";
  message.sender.email = AUTHOR_EMAIL;

  message.subject = "Test sending Email with attachments and inline images from SD card and Flash";
  message.addRecipient("Sara", RECIPIENT_EMAIL);

  /** Two alternative content versions are sending in this example e.g. plain text and html */
  String htmlMsg = "This message contains attachments: image and text file.";
  message.html.content = htmlMsg.c_str();
  message.html.charSet = "utf-8";
  message.html.transfer_encoding = Content_Transfer_Encoding::enc_qp;

  message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_normal;
  message.response.notify = esp_mail_smtp_notify_success | esp_mail_smtp_notify_failure | esp_mail_smtp_notify_delay;

  /* The attachment data item */
  SMTP_Attachment att;

  /** Set the attachment info e.g. 
   * file name, MIME type, file path, file storage type,
   * transfer encoding and content encoding
  */
  att.descr.filename = "image.png";
  att.descr.mime = "image/png"; //binary data
  att.file.path = "/image.png";
  att.file.storage_type = esp_mail_file_storage_type_flash;
  att.descr.transfer_encoding = Content_Transfer_Encoding::enc_base64;

  /* Add attachment to the message */
  message.addAttachment(att);

  message.resetAttachItem(att);
  att.descr.filename = "text_file.txt";
  att.descr.mime = "text/plain";
  att.file.path = "/text_file.txt";
  att.file.storage_type = esp_mail_file_storage_type_flash;
  att.descr.transfer_encoding = Content_Transfer_Encoding::enc_base64;

  /* Add attachment to the message */
  message.addAttachment(att);

  /* Connect to server with the session config */
  if (!smtp.connect(&session))
    return;

  /* Start sending the Email and close the session */
  if (!MailClient.sendMail(&smtp, &message, true))
    Serial.println("Error sending Email, " + smtp.errorReason());
}

void loop()
{
}

/* Callback function to get the Email sending status */
void smtpCallback(SMTP_Status status){
  /* Print the current status */
  Serial.println(status.info());

  /* Print the sending result */
  if (status.success()){
    Serial.println("----------------");
    ESP_MAIL_PRINTF("Message sent success: %dn", status.completedCount());
    ESP_MAIL_PRINTF("Message sent failled: %dn", status.failedCount());
    Serial.println("----------------n");
    struct tm dt;

    for (size_t i = 0; i < smtp.sendingResult.size(); i++){
      /* Get the result item */
      SMTP_Result result = smtp.sendingResult.getItem(i);
      time_t ts = (time_t)result.timestamp;
      localtime_r(&ts, &dt);

      ESP_MAIL_PRINTF("Message No: %dn", i + 1);
      ESP_MAIL_PRINTF("Status: %sn", result.completed ? "success" : "failed");
      ESP_MAIL_PRINTF("Date/Time: %d/%d/%d %d:%d:%dn", dt.tm_year + 1900, dt.tm_mon + 1, dt.tm_mday, dt.tm_hour, dt.tm_min, dt.tm_sec);
      ESP_MAIL_PRINTF("Recipient: %sn", result.recipients);
      ESP_MAIL_PRINTF("Subject: %sn", result.subject);
    }
    Serial.println("----------------n");
  }
}

Afficher le code brut

Comment fonctionne le code

Ce code est très similaire au précédent, nous allons donc juste jeter un œil aux parties pertinentes pour envoyer des pièces jointes.

Dans le mettre en place(), vous devez initialiser SPIFFS :

if(!SPIFFS.begin(true)) {
  Serial.println("An Error has occurred while mounting SPIFFS");
  return;
}

Vous devez créer une pièce jointe comme suit :

/* The attachment data item */
SMTP_Attachment att;

Ensuite, ajoutez les détails de la pièce jointe : nom de fichier, type MIME, chemin d’accès au fichier, type de stockage de fichier et codage de transfert. Dans les lignes suivantes, nous envoyons le fichier image.

att.descr.filename = "image.png";
att.descr.mime = "image/png"; 
att.file.path = "/image.png";
att.file.storage_type = esp_mail_file_storage_type_flash;
att.descr.transfer_encoding = Content_Transfer_Encoding::enc_base64;

Enfin, ajoutez la pièce jointe au message :

message.addAttachment(att);

Si vous souhaitez envoyer plus de pièces jointes, vous devez appeler la ligne suivante avant d’ajouter la prochaine pièce jointe :

message.resetAttachItem(att);

Ensuite, saisissez les détails de l’autre pièce jointe (fichier texte) :

att.descr.filename = "text_file.txt";
att.descr.mime = "text/plain";
att.file.path = "/text_file.txt";
att.file.storage_type = esp_mail_file_storage_type_flash;
att.descr.transfer_encoding = Content_Transfer_Encoding::enc_base64;

Et ajoutez cette pièce jointe au message :

message.addAttachment(att);

Enfin, il vous suffit d’envoyer le message comme vous l’avez fait avec l’exemple précédent :

if (!MailClient.sendMail(&smtp, &message, true))
  Serial.println("Error sending Email, " + smtp.errorReason());

Manifestation

Après avoir téléchargé le code, ouvrez le moniteur série à un débit en bauds de 115 200 et appuyez sur le bouton EN/RESET intégré. Si tout se passe bien, vous devriez obtenir un message similaire sur le moniteur série.

ESP Envoyer un message électronique avec succès Serial Monitor

Vérifiez l’adresse e-mail du destinataire. Vous devriez avoir un nouvel e-mail avec deux pièces jointes.

Envoyer un e-mail avec pièces jointes ESP32 et ESP8266

Conclusion

Dans ce tutoriel, vous avez appris à envoyer des e-mails avec l’ESP32 à l’aide d’un serveur SMTP. Pour que cette méthode fonctionne, l’ESP32 doit avoir accès à Internet.

Si vous ne souhaitez pas utiliser de serveur SMTP, vous pouvez également écrire un script PHP pour envoyer des notifications par e-mail avec la carte ESP32 ou ESP8266.

Vous avez appris à envoyer un simple e-mail avec du texte et des pièces jointes. Lorsque vous utilisez des pièces jointes, celles-ci doivent être enregistrées sur le système de fichiers ESP32 (SPIFFS) ou sur une carte microSD (non abordée dans ce didacticiel).

Les exemples présentés montrent comment envoyer un seul e-mail au démarrage de l’ESP32. L’idée est de modifier le code et de l’inclure dans vos propres projets. Par exemple, il peut être utile d’envoyer un fichier .txt avec les lectures du capteur, d’envoyer une photo capturée avec l’ESP32-CAM, d’utiliser le sommeil profond pour réveiller votre planche toutes les heures et d’envoyer un e-mail avec des données, etc.

Nous espérons que vous avez trouvé ce tutoriel intéressant.

Pour en savoir plus sur l’ESP32, consultez nos ressources :

Merci d’avoir lu.