Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Senin, 27 Juli 2026

DIYables ESP32 Gmail - Cara Mengirim Email Menggunakan Gmail dengan ESP32

ESP32 tidak hanya dapat digunakan untuk membaca sensor atau mengendalikan perangkat elektronik, tetapi juga mampu mengirim email secara otomatis melalui jaringan internet. Fitur ini sangat berguna untuk berbagai aplikasi Internet of Things (IoT), seperti sistem notifikasi keamanan, monitoring suhu, pendeteksi kebakaran, monitoring level air, hingga sistem otomatis yang mengirimkan laporan kondisi perangkat secara real-time. Pada tutorial ini, Anda akan mempelajari cara memprogram ESP32 agar dapat mengirim email menggunakan layanan Gmail SMTP Server. Email dikirim menggunakan akun Gmail sebagai pengirim (sender), sedangkan alamat penerima (recipient) dapat menggunakan akun email apa saja, baik Gmail maupun layanan email lainnya seperti Outlook, Yahoo Mail, dan sebagainya.

Perangkat Keras yang Dibutuhkan

- Modul ESP32 Dev Module (ESP-WROOM-32 38 Pin)

- Kabel Micro USB

Persiapan Akun Gmail

Sebelum ESP32 dapat mengirim email melalui Gmail, diperlukan konfigurasi khusus pada akun Google. Hal ini dilakukan karena Google tidak lagi mengizinkan aplikasi pihak ketiga menggunakan password akun utama untuk proses autentikasi SMTP. Sebagai gantinya, Google menyediakan fitur App Password (Kata Sandi Aplikasi) yang berfungsi sebagai password khusus untuk aplikasi seperti ESP32. Sebelum melanjutkan, perhatikan beberapa hal berikut:

- Disarankan untuk tidak menggunakan akun Gmail utama. Sebaiknya buat akun Gmail baru yang khusus digunakan untuk proses pengujian maupun proyek IoT sehingga lebih aman.

- Password yang digunakan pada program ESP32 bukan password login Gmail, melainkan App Password yang dibuat melalui akun Google.

 

Baca juga: ESP32 WebSocket - Cara Membangun Komunikasi Real-Time antara ESP32 dan Web Browser 

Membuat App Password Gmail

Ikuti langkah-langkah berikut untuk memperoleh App Password yang nantinya akan digunakan pada program ESP32:

1. Buat Akun Gmail Baru

Buat sebuah akun Gmail baru yang akan digunakan sebagai akun pengirim email.

2. Login ke Akun Gmail

Masuk menggunakan akun Gmail yang baru saja dibuat.

3. Buka Halaman Google Account

Masuk ke menu Google Account melalui pengaturan akun Google.

4. Masuk ke Menu Security

Pilih menu Security (Keamanan) pada panel pengaturan akun Google.

5. Aktifkan 2-Step Verification

Aktifkan fitur 2-Step Verification (Verifikasi 2 Langkah). Perlu diketahui bahwa fitur App Password hanya tersedia apabila akun Google telah mengaktifkan Verifikasi 2 Langkah.

6. Buat App Password

Setelah Verifikasi 2 Langkah aktif, buka halaman App Passwords (Kata Sandi Aplikasi). Buat App Password baru, kemudian berikan nama sesuai kebutuhan, misalnya ESP32, IoT Project, atau nama lainnya.


7. Generate App Password

Klik tombol Create (Buat) atau Generate. Google akan menampilkan App Password yang terdiri dari 16 karakter.



8. Simpan App Password

Salin dan simpan App Password tersebut dengan baik. Password inilah yang nantinya digunakan pada program ESP32 sebagai pengganti password akun Gmail.

Catatan: Jangan pernah menggunakan password login Gmail pada program ESP32. Gunakan App Password yang telah dibuat pada langkah sebelumnya.

Kode Program ESP32


#include <WiFi.h>

#include <ESP_Mail_Client.h>

 

#define WIFI_SSID "YOUR_WIFI_SSID" // CHANGE IT

#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD" // CHANGE IT


// the sender email credentials

#define SENDER_EMAIL "xxxxxx@gmail.com" // CHANGE IT

#define SENDER_PASSWORD "xxxx xxxx xxxx xxxx"  // CHANGE IT to your Google App password


#define RECIPIENT_EMAIL "xxxxxx@gmail.com" // CHANGE IT


#define SMTP_HOST "smtp.gmail.com"

#define SMTP_PORT 587


SMTPSession smtp;


void setup() {

  Serial.begin(9600);

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);


  Serial.print("Connecting to Wi-Fi");


  while (WiFi.status() != WL_CONNECTED) {

    Serial.print(".");

    delay(300);

  }

  Serial.println();

  Serial.print("Connected with IP: ");

  Serial.println(WiFi.localIP());

  Serial.println();


  String subject = "Email Notification from ESP32";



  String textMsg = "This is an email sent from ESP32.\n";

  textMsg += "Sensor value: ";

  textMsg += "15"; // OR replace this value read from a sensor


  gmail_send(subject, textMsg);

}


void loop() {

  // YOUR OTHER CODE HERE

}


void gmail_send(String subject, String textMsg) {

  // set the network reconnection option

  MailClient.networkReconnect(true);


  smtp.debug(1);


  smtp.callback(smtpCallback);

  Session_Config config;


  // set the session config

  config.server.host_name = SMTP_HOST;

  config.server.port = SMTP_PORT;

  config.login.email = SENDER_EMAIL;

  config.login.password = SENDER_PASSWORD;

  config.login.user_domain = F("127.0.0.1");

  config.time.ntp_server = F("pool.ntp.org,time.nist.gov");

  config.time.gmt_offset = 3;

  config.time.day_light_offset = 0;


  // declare the message class

  SMTP_Message message;


  // set the message headers

  message.sender.name = F("ESP32");

  message.sender.email = SENDER_EMAIL;

  message.subject = subject;

  message.addRecipient(F("To Whom It May Concern"), RECIPIENT_EMAIL);


  message.text.content = textMsg;

  message.text.transfer_encoding = "base64";

  message.text.charSet = F("utf-8");

  message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_low;


  // set the custom message header

  message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>"));


  // connect to the server

  if (!smtp.connect(&config)) {

    Serial.printf("Connection error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str());

    return;

  }


  if (!smtp.isLoggedIn()) {

    Serial.println("Not yet logged in.");

  } else {

    if (smtp.isAuthenticated())

      Serial.println("Successfully logged in.");

    else

      Serial.println("Connected with no Auth.");

  }


  // start sending Email and close the session

  if (!MailClient.sendMail(&smtp, &message))

    Serial.printf("Error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str());

}


// 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("----------------");

    Serial.printf("Message sent success: %d\n", status.completedCount());

    Serial.printf("Message sent failed: %d\n", status.failedCount());

    Serial.println("----------------\n");


    for (size_t i = 0; i < smtp.sendingResult.size(); i++) {

      // get the result item

      SMTP_Result result = smtp.sendingResult.getItem(i);


      Serial.printf("Message No: %d\n", i + 1);

      Serial.printf("Status: %s\n", result.completed ? "success" : "failed");

      Serial.printf("Date/Time: %s\n", MailClient.Time.getDateTimeString(result.timestamp, "%B %d, %Y %H:%M:%S").c_str());

      Serial.printf("Recipient: %s\n", result.recipients.c_str());

      Serial.printf("Subject: %s\n", result.subject.c_str());

    }

    Serial.println("----------------\n");


    // free the memory

    smtp.sendingResult.clear();

  }

}


Cara Menjalankan Program

Setelah seluruh persiapan selesai, ikuti langkah-langkah berikut untuk mengunggah program ke board ESP32.

1. Hubungkan ESP32 ke Komputer

Hubungkan board ESP32 ke PC atau laptop menggunakan kabel Micro USB.

2. Buka Arduino IDE

Jalankan aplikasi Arduino IDE.

3. Pilih Board dan Port

Pada menu Tools, pilih:

- Board: ESP32 Dev Module (atau board ESP32 yang digunakan)

- Port: Sesuaikan dengan port COM tempat ESP32 terhubung.

4. Install Library ESP Mail Client

Buka Library Manager melalui Arduino IDE. Cari library ESP Mail Client. Pilih library ESP Mail Client yang dikembangkan oleh Mobizt, kemudian klik Install. Library ini digunakan agar ESP32 dapat berkomunikasi dengan server SMTP Gmail untuk mengirim email.



5. Buka Program

Salin kode program yang telah disediakan kemudian buka menggunakan Arduino IDE.

6. Konfigurasi Jaringan WiFi

Ubah parameter berikut sesuai dengan jaringan WiFi yang digunakan.

- WIFI_SSID → nama jaringan WiFi

- WIFI_PASSWORD → password WiFi

Pastikan ESP32 terhubung ke jaringan internet agar dapat mengakses server Gmail.

7. Konfigurasi Email Pengirim

Masukkan informasi akun Gmail yang akan digunakan sebagai pengirim email dengan mengubah parameter berikut:

- SENDER_EMAIL

- SENDER_PASSWORD

Isi SENDER_EMAIL menggunakan alamat Gmail yang telah dibuat sebelumnya. Sedangkan SENDER_PASSWORD harus diisi menggunakan App Password, bukan password login Gmail.

8. Tentukan Email Penerima

Selanjutnya, ubah nilai RECIPIENT_EMAIL. Isi dengan alamat email tujuan. Email penerima dapat berupa:

- Gmail

- Outlook

- Yahoo Mail

- iCloud Mail

- Layanan email lainnya yang valid

Jika hanya ingin melakukan pengujian, Anda juga dapat menggunakan alamat Gmail yang sama sebagai pengirim sekaligus penerima.

Perlu Diperhatikan

Sebelum mengunggah program, pastikan konfigurasi berikut sudah benar.

- Email pengirim harus menggunakan Gmail.

- Password pengirim harus berupa App Password yang telah dibuat melalui akun Google.

- Email penerima dapat menggunakan layanan email apa pun.

Kesalahan konfigurasi pada salah satu parameter di atas dapat menyebabkan proses pengiriman email gagal.

9. Upload Program

Klik tombol Upload pada Arduino IDE untuk mengunggah program ke board ESP32. Tunggu hingga proses upload selesai.

10. Buka Serial Monitor

Setelah proses upload berhasil, buka Serial Monitor. ESP32 akan menampilkan proses koneksi ke jaringan WiFi, autentikasi ke server Gmail, hingga status pengiriman email. Jika seluruh proses berhasil, Serial Monitor akan menampilkan informasi bahwa email telah berhasil dikirim.



11. Periksa Email Penerima

Buka akun email penerima yang telah dikonfigurasi sebelumnya. Jika semua konfigurasi telah dilakukan dengan benar, Anda akan menerima email yang dikirim oleh ESP32 melalui Gmail.


 

Baca juga: DIYables ESP32 Web Server - Cara Mengontrol LED melalui Web Browser Menggunakan ESP32

 

 

 

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.  

0 on: "DIYables ESP32 Gmail - Cara Mengirim Email Menggunakan Gmail dengan ESP32"