Ce tutoriel montre comment envoyer des photos capturées depuis l'ESP32-CAM vers votre compte de messagerie en utilisant un SMTP Serveur. Nous allons vous montrer un exemple simple qui prend une photo au démarrage de l'ESP32 et l'envoie en pièce jointe dans un e-mail. La dernière photo prise est temporairement enregistrée dans le SPIFF ESP32.

Pour que ce projet fonctionne, l'ESP32-CAM doit être connecté à un routeur avec accès à Internet - doit être connecté à votre réseau local.
Ce projet est compatible avec n'importe quelle carte de caméra ESP32 avec la caméra OV2640. Vous devez juste vous assurer que vous utilisez la bonne affectation des broches pour la carte que vous utilisez.
Bibliothèque ESP32 MailClient
Pour envoyer des e-mails avec ESP32-CAM, nous utiliserons la bibliothèque ESP32 MailClient. Cette bibliothèque permet à l'ESP32 d'envoyer et de recevoir des emails avec ou sans pièce jointe via les serveurs SMTP et IMAP.
Dans ce projet, nous utiliserons SMTP pour envoyer un e-mail avec une pièce jointe . La pièce jointe est une photo prise avec l'ESP32-CAM.
SMTP signifie Simple Mail Transfer Protocol et il s'agit d'une norme Internet pour la transmission d'e-mails. Pour envoyer des e-mails via le code, vous devez connaître les détails de votre serveur SMTP. Chaque fournisseur de messagerie a un serveur SMTP différent.
Installation de la bibliothèque ESP32 MailClient
Avant de poursuivre avec ce didacticiel, vous devez installer la bibliothèque ESP32 MailClient . Cette bibliothèque peut être installée via le gestionnaire de bibliothèque Arduino IDE.
Dans votre IDE Arduino, accédez à Sketch > ; Inclure la bibliothèque > ; Gérer les bibliothèques…
Le gestionnaire de bibliothèque devrait s'ouvrir. Recherchez ESP32 Mail Client de Mobizt et installez la bibliothèque comme indiqué ci-dessous.

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 adresse e-mail 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 voir 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, accédez à ce lien pour créez-en un nouveau.

Créer un mot de passe d'application
Vous devez créer un mot de passe d'application pour que l'ESP32 puisse envoyer des e-mails à l'aide de votre compte Gmail. Un mot de passe d'application est un code d'accès à 16 chiffres qui autorise une application ou un appareil moins sécurisé à accéder à votre compte Google. En savoir plus sur la connexion avec des mots de passe d'application ici. p>
Un mot de passe d'application ne peut être utilisé qu'avec des comptes pour lesquels la validation en deux étapes est activée.
- Ouvrez votre compte Google.
- Dans le panneau de navigation, sélectionnez Sécurité.
- Sous "Connexion à Google", sélectionnez Validation en deux étapes > ; Commencez.
- Suivez les étapes à l'écran.
Après avoir activé la vérification en 2 étapes, vous pouvez créer un mot de passe d'application.
- Ouvrez votre compte Google.
- Dans le panneau de navigation, sélectionnez Sécurité.
- Sous "Comment vous connecter à Google", sélectionnez Validation en 2 etapes, Mots de passe des applications.

- Dans le champ Sélectionner une application, choisissez mail. Pour l'appareil, sélectionnez Autre et donnez-lui un nom, par exemple ESP32. Ensuite, cliquez sur Générer. Une fenêtre apparaîtra avec un mot de passe que vous utiliserez avec l'ESP32 ou l'ESP8266 pour envoyer des e-mails. Enregistrez ce mot de passe (même s'il indique que vous n'aurez pas besoin de vous en souvenir) car vous en aurez besoin plus tard.

Maintenant, vous devriez avoir un mot de passe d'application que vous utiliserez sur le code ESP32 pour envoyer les e-mails.

Si vous utilisez un autre fournisseur de messagerie, vérifiez ce que vous devez faire pour autoriser les applications moins sécurisées. Vous devriez pouvoir trouver les instructions avec une recherche rapide sur Google "votre_fournisseur_email + autoriser les applications moins sécurisées".
Paramètres du serveur SMTP 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 li>
- Port SMTP : 587
- SMTP TLS/SSL requis : Oui
Paramètres du serveur SMTP Live 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 Live/Hotmail complète
- Mot de passe SMTP : votre Windows Live Mot de passe 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, tout est prêt pour commencer à envoyer des e-mails avec l'ESP32-CAM.
Code - ESP32-CAM Envoyer un e-mail
Le code suivant prend une photo lorsque l'ESP32-CAM démarre pour la première fois et l'envoie à votre compte de messagerie. Avant de télécharger le code, assurez-vous d'insérer vos paramètres d'e-mail d'expéditeur ainsi que l'e-mail de votre destinataire.
#include "esp_camera.h"
#include "SPI.h"
#include "driver/rtc_io.h"
#include "ESP32_MailClient.h"
#include <FS.h>
#include <SPIFFS.h>
#include <WiFi.h>
// REMPLACER PAR VOS IDENTIFIANTS RÉSEAU
const char* ssid = "REPLACE_WITH_YOUR_SSID" ;
const char* password = "REPLACE_WITH_YOUR_PASSWORD" ;
// Pour envoyer des e-mails avec Gmail sur le port 465 (SSL), vous devez créer un mot de passe d'application : https://support.google.com/accounts/answer/185833
#define emailSenderAccount "[email protected]"
#define emailSenderPassword "SENDER_ACCOUNT_PASSWORD"
#define smtpServer "smtp.gmail.com"
#define smtpServerPort 465
#define emailSubject "ESP32-CAM Photo Captured"
#define emailRecipient "[email protected]"
#define CAMERA_MODEL_AI_THINKER
#if defined(CAMERA_MODEL_AI_THINKER)
#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
#else
#error "Modèle de caméra non sélectionné"
#endif
// L'objet de données Email Sending contient la configuration et les données à envoyer
SMTPData smtpData;
// Nom du fichier photo à enregistrer dans SPIFFS
#define FILE_PHOTO "/photo.jpg"
void setup() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // désactiver le détecteur de baisse de tension
Serial.begin(115200);
Serial.println();
// Connect to Wi-Fi
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
if (!SPIFFS.begin(true)) {
Serial.println("Une erreur s'est produite lors du montage de SPIFFS");
ESP.restart();
}
else {
delay(500);
Serial.println("SPIFFS monté avec succès");
}
// Imprimer l'adresse IP locale ESP32
Serial.print("IP Address: http://");
Serial.println(WiFi.localIP());
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
if(psramFound()){
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
// Initialiser la caméra
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("L'initialisation de la caméra a échoué avec l'erreur 0x%x", err );
return;
}
capturePhotoSaveSpiffs();
sendPhoto();
}
void loop() {
}
// Vérifie si la capture de photo a réussi
bool checkPhoto( fs::FS &fs ) {
File f_pic = fs.open( FILE_PHOTO );
unsigned int pic_sz = f_pic.size();
return ( pic_sz > 100 );
}
// Capturez une photo et enregistrez-la dans SPIFFS
void capturePhotoSaveSpiffs( void ) {
camera_fb_t * fb = NULL; // pointer
bool ok = 0; // Boolean indiquant si la photo a été prise correctement
do {
// Prendre une photo avec l'appareil photo
Serial.println("Taking a photo...");
fb = esp_camera_fb_get();
if (!fb) {
Serial.println("La capture de la caméra a échoué");
return;
}
// Nom du fichier photo
Serial.printf("Picture file name: %sn", FILE_PHOTO);
File file = SPIFFS.open(FILE_PHOTO, FILE_WRITE);
// Insertion des données dans le fichier photo
if (!file) {
Serial.println("Féchec de l'ouverture du fichier en mode écriture");
}
else {
file.write(fb->buf, fb->len); // payload (image), payload length
Serial.print("The picture has been saved in ");
Serial.print(FILE_PHOTO);
Serial.print(" - Size: ");
Serial.print(file.size());
Serial.println(" bytes");
}
// Close the file
file.close();
esp_camera_fb_return(fb);
// vérifie si le fichier a été correctement enregistré dans SPIFFS
ok = checkPhoto(SPIFFS);
} while ( !ok );
}
void sendPhoto( void ) {
// Preparing email
Serial.println("Sending email...");
// Définir l'hôte, le port, le compte et le mot de passe de messagerie du serveur SMTP
smtpData.setLogin(smtpServer, smtpServerPort, emailSenderAccount, emailSenderPassword);
// Définir le nom et l'e-mail de l'expéditeur
smtpData.setSender("ESP32-CAM", emailSenderAccount);
// Définir la priorité ou l'importance des e-mails Élevé, Normal, Faible ou 1 à 5 (1 est le plus élevé)
smtpData.setPriority("High");
// Définir le sujet
smtpData.setSubject(emailSubject);
// Définir le message électronique au format HTML
smtpData.setMessage("<h2>Photo prise avec ESP32-CAM et jointe à cet e-mail.</h2>", true);
// Définir le message électronique au format texte
//smtpData.setMessage("Photo prise avec ESP32-CAM et jointe à cet e-mail.", false);
// Ajouter des destinataires, possibilité d'ajouter plusieurs destinataires
smtpData.addRecipient(emailRecipient);
//smtpData.addRecipient(emailRecipient2);
// Ajouter des fichiers joints à partir de SPIFFS
smtpData.addAttachFile(FILE_PHOTO, "image/jpg");
// Définir le type de stockage pour joindre des fichiers dans votre e-mail (SPIFFS)
smtpData.setFileStorageType(MailClientStorageType::SPIFFS);
smtpData.setSendCallback(sendCallback);
// Commencer à envoyer un e-mail, peut être défini comme fonction de rappel pour suivre l'état
if (!MailClient.sendMail(smtpData))
Serial.println("Error sending Email, " + MailClient.smtpErrorReason());
// Efface toutes les données de l'objet Email pour libérer de la mémoire
smtpData.empty();
}
// Fonction de rappel pour obtenir le statut d'envoi de l'e-mail
void sendCallback(SendStatus msg) {
//Imprime l'état actuel
Serial.println(msg.info());
}
Fonctionnement du code
N'oubliez pas d'insérer vos informations d'identification réseau et vos paramètres de messagerie dans le code. De plus, si vous utilisez un modèle de caméra autre qu'un ESP32-CAM AI-Thinker, n'oubliez pas de modifier l'affectation des broches.
Importer des bibliothèques
Importez les bibliothèques requises. Le ESP32_MailClient.h est utilisé pour envoyer des e-mails, le FS.h et SPIFFS.h sont utilisés pour accéder et enregistrer des fichiers sur SPIFFS et la bibliothèque WiFi.h est utilisée pour initialiser le Wi-Fi et connecter votre ESP32-CAM à votre réseau local.
#include "esp_camera.h"
#include "SPI.h"
#include "driver/rtc_io.h"
#include "ESP32_MailClient.h"
#include <FS.h>
#include <SPIFFS.h>
#include <WiFi.h>
Identifiants réseau
Insérez vos identifiants réseau dans les variables suivantes :
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
Paramètres de messagerie
Tapez le compte de l'expéditeur de l'e-mail dans la variable emailSenderAccount et son mot de passe dans la variable emailSenderPassword.
#define emailSenderAccount "[email protected]"
#define emailSenderPassword "SENDER_ACCOUNT_PASSWORD"
Insérez l'e-mail du destinataire. Voici l'email qui recevra les emails envoyés par l'ESP32 :
#define emailRecipient "[email protected]"
Insérez les paramètres SMTP de votre fournisseur de messagerie sur les lignes suivantes. Nous utilisons les paramètres d'un compte Gmail. Si vous utilisez un autre fournisseur de messagerie, remplacez-le par les paramètres SMTP correspondants.
#define smtpServer "smtp.gmail.com"
#define smtpServerPort 465
Écrivez l'objet de l'e-mail dans la variable emailSubject.
#define emailSubject "Photo ESP32-CAM Prise"
Créez un objet STMPData appelé smtpData qui contient les données à envoyer par e-mail et toutes les autres configurations.< /p>
SMTPData smtpData;
La photo prise avec l'appareil photo ESP32 sera temporairement enregistrée dans SPIFFS sous le nom photo.jpg.
define FILE_PHOTO "/photo.jpg"
Broches de caméra ESP32
Définissez les broches utilisées par votre modèle d'appareil photo. Nous utilisons l'ESP32-CAM AI-Thinker.
#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
setup()
Dans setup(), connectez l'ESP32 au Wi-Fi.
// Connect to Wi-Fi
WiFi.begin(ssid, password);
Serial.print("Connexion au Wi-Fi...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Initialisez SPIFFS (SPI Flash File System) pour enregistrer la dernière photo prise avec l'ESP32-CAM.
if (!SPIFFS.begin(true)) {
Serial.println("Une erreur s'est produite lors du montage de SPIFFS");
ESP.restart();
}
else {
delay(500);
Serial.println("SPIFFS monté avec succès");
}
Imprimez l'adresse IP ESP32-CAM :
// Imprimer l'adresse IP locale ESP32
Serial.print("IP Address: http://");
Serial.println(WiFi.localIP());
Les lignes suivantes configurent la caméra et définissent les paramètres de la caméra :
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
if(psramFound()){
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
Initialiser la caméra.
// Initialize camera
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Échec de l'initialisation de la caméra avec erreur0x%x", err);
return;
}
Après avoir initialisé l'appareil photo, appelez les fonctions capturePhotoSaveSpiffs() et sendPhoto(). Ces fonctions sont définies à la fin du code.
fonction capturePhotoSaveSpiffs()
La fonction capturePhotoSaveSpiffs() capture une photo et l'enregistre dans le SPIFF ESP32. Dans les lignes suivantes, vous prenez une photo et l'enregistrez dans le framebuffer fb :
fb = esp_camera_fb_get();
if (!fb) {
Serial.println("La capture de la caméra a échoué");
return;
}
Ensuite, créez un nouveau fichier dans SPIFFS où la photo sera enregistrée.
Serial.printf("Nom du fichier image : %sn", FILE_PHOTO);
File file = SPIFFS.open(FILE_PHOTO, FILE_WRITE);
Vérifiez si le fichier a été créé avec succès. Sinon, imprimez un message d'erreur.
if (!file) {
Serial.println("Failed to open file in writing mode");
}
Si un nouveau fichier a été créé avec succès, "copiez" l'image du tampon vers ce fichier nouvellement créé.
file.write(fb->buf, fb->len); // payload (image), payload length
Serial.print("The picture has been saved in ");
Serial.print(FILE_PHOTO);
Serial.print(" - Size: ");
Serial.print(file.size());
Serial.println(" bytes");
Fermez le fichier et effacez le tampon pour une utilisation future.
file.close();
esp_camera_fb_return(fb);
Enfin, vérifiez si la photo a été prise et enregistrée avec succès. Nous pouvons le faire en vérifiant la taille du fichier photo avec la fonction checkPhoto().
ok = checkPhoto(SPIFFS);
La fonction checkPhoto() vérifie la taille de l'image du fichier. Si la taille de l'image est supérieure à 100 octets, il est presque certain que la photo a été prise et enregistrée avec succès. Dans ce cas, il renvoie 1.
bool checkPhoto( fs::FS &fs ) {
File f_pic = fs.open( FILE_PHOTO );
unsigned int pic_sz = f_pic.size();
return ( pic_sz > 100 );
}
Ainsi, la variable ok est égale à 1.
ok = checkPhoto(SPIFFS);
Dans le cas où la taille de la photo est inférieure à 100 octets, la variable ok continuera à être 0, et il continuera d'essayer de prendre une nouvelle photo et de l'enregistrer.
fonction envoyerPhoto()
Une fois la photo enregistrée avec succès dans SPIFFS, nous l'enverrons par e-mail en appelant la fonction sendPhoto(). Jetons un coup d'œil à cette fonction.
void sendPhoto( void ) {
La ligne suivante définit l'hôte du serveur SMTP, le port SMTP, l'adresse e-mail du compte et le mot de passe utilisés pour se connecter :
smtpData.setLogin(smtpServer, smtpServerPort, emailSenderAccount, emailSenderPassword);
Définissez le nom et l'adresse e-mail de l'expéditeur. Dans ce cas, nous définissons le nom de l'expéditeur sur ESP32-CAM.
smtpData.setSender("ESP32-CAM", emailSenderAccount);
Définir la priorité des e-mails.
smtpData.setPriority("High");
Définissez l'objet de l'e-mail.
smtpData.setSubject(emailSubject);
La ligne suivante définit le message. Vous pouvez envoyer un texte HTML ou un texte brut. Dans ce cas, nous envoyons un message avec du HTML.
smtpData.setMessage("<h2>Photo captured with ESP32-CAM and attached in this email.</h2>", true);
Lors de l'envoi d'un message au format HTML, vous devez transmettre true comme second paramètre à setMessage() méthode. Si vous souhaitez envoyer du texte brut, définissez false.
//smtpData.setMessage("Photo captured with ESP32-CAM and attached in this email.", false);
Enfin, définissez l'adresse e-mail du destinataire. C'est l'email qui recevra les messages de l'ESP32.
smtpData.addRecipient(emailRecipient);
Ensuite, pour joindre un fichier, il vous suffit d'appeler le addAtatachFile() sur l'objet smtpData et passer en argument le chemin du fichier.
smtpData.addAttachFile(FILE_PHOTO, "image/jpg");
Enfin, vous devez définir où vos fichiers sont enregistrés (SPIFFS ou carte SD). Nous utilisons SPIFFS :
smtpData.setFileStorageType(MailClientStorageType::SPIFFS);
Définissez une fonction de rappel qui sera appelée lors de l'envoi d'un e-mail.
smtpData.setSendCallback(sendCallback);
La fonction sendCallback() indique si l'e-mail a été envoyé avec succès ou non.
Maintenant que nous avons défini tous les détails de smtpData, nous sommes prêts à envoyer l'e-mail.
if (!MailClient.sendMail(smtpData))
Serial.println("Error sending Email, " + MailClient.smtpErrorReason());
Après avoir envoyé l'e-mail, vous pouvez effacer toutes les données de l'objet smtpData.
smtpData.empty();
Dans cet exemple, l'e-mail est envoyé une fois au démarrage de l'ESP32, c'est pourquoi la loop() est vide. L'idée est d'adapter le code à utiliser dans vos propres projets.
void loop() {
}
Pour envoyer un nouvel e-mail. Il vous suffit de réinitialiser votre carte (appuyez sur le bouton RESET
intégré), pour qu'elle redémarre et exécute à nouveau le code.
Démonstration
Après avoir apporté les modifications nécessaires au code : brochage de la caméra, adresse e-mail de l'expéditeur, mot de passe de l'e-mail de l'expéditeur, adresse e-mail du destinataire et informations d'identification réseau, vous pouvez télécharger le code sur votre tableau.
Après le téléchargement, ouvrez le moniteur série et appuyez sur le bouton ESP32-CAM RESET. L'ESP32 doit se connecter au Wi-Fi, prendre une photo, l'enregistrer dans SPIFFS, se connecter au serveur SMTP et envoyer l'e-mail comme indiqué ci-dessous.

Après quelques secondes, vous devriez avoir un nouvel e-mail de l'ESP32-CAM dans votre boîte de réception. Comme vous pouvez le voir dans l'image ci-dessous, le nom de l'e-mail de l'expéditeur est "ESP32-CAM" comme nous l'avons défini dans le code et le sujet "ESP32-CAM Photo Captured".

Ouvrez l'e-mail et vous devriez voir une photo capturée par l'ESP32-CAM.

Vous pouvez ouvrir ou télécharger la photo pour la voir en taille réelle.

Résumé
Dans ce didacticiel, vous avez appris à envoyer des e-mails avec des photos prises avec l'ESP32-CAM. L'exemple présenté est le plus simple possible : il prend une photo et l'envoie par e-mail au premier démarrage de l'ESP32-CAM. Pour envoyer un autre e-mail, vous devez réinitialiser le tableau.
Ce projet n'a pas d'application pratique, mais il est utile de comprendre comment envoyer un e-mail avec une pièce jointe. Après cela, il devrait être assez facile d'inclure cette fonctionnalité dans vos propres projets ESP32-CAM.
Rendez-vous sur notre site pour des blogs aussi intéressants les uns que les autres!
4 commentaires
Je trouve vos blogs très intéressants car on apprend beaucoup avec ces projets. MERCI
Moi je suis bloqué au mot de passe d'application, j'ai déjà un compte normal. Je ne vois pas là où vous dites 'Sous "Connexion à Google" '. Comment faire? C'est vraiment très important pour moi.