/** * Created by K. Suwatchai (Mobizt) * * Email: suwatchai@outlook.com * * Github: https://github.com/mobizt/ESP-Mail-Client * * Copyright (c) 2023 mobizt */ // This example used TTGO T-A7670 (ESP32 with SIMCom SIMA7670) and TinyGSMClient. /** Note for library update from v2.x.x to v3.x.x. * * Struct data names changed * * "ESP_Mail_Session" changes to "Session_Config" * "IMAP_Config" changes to "IMAP_Data" * * Changes in the examples * * ESP_Mail_Session session; * to * Session_Config config; * * IMAP_Config config; * to * IMAP_Data imap_data; */ // To allow TinyGSM library integration, the following macro should be defined in src/ESP_Mail_FS.h or // your custom config file src/Custom_ESP_Mail_FS.h. // #define TINY_GSM_MODEM_SIM7600 #define TINY_GSM_MODEM_SIM7600 // SIMA7670 Compatible with SIM7600 AT instructions // Set serial for debug console (to the Serial Monitor, default speed 115200) #define SerialMon Serial // Set serial for AT commands (to the module) // Use Hardware Serial on Mega, Leonardo, Micro #define SerialAT Serial1 // See all AT commands, if wanted // #define DUMP_AT_COMMANDS // Define the serial console for debug prints, if needed #define TINY_GSM_DEBUG SerialMon #define TINY_GSM_USE_GPRS true #define TINY_GSM_USE_WIFI false // set GSM PIN, if any #define GSM_PIN "" // Your GPRS credentials, if any const char apn[] = "YourAPN"; const char gprsUser[] = ""; const char gprsPass[] = ""; #define uS_TO_S_FACTOR 1000000ULL // Conversion factor for micro seconds to seconds #define TIME_TO_SLEEP 600 // Time ESP32 will go to sleep (in seconds) #define UART_BAUD 115200 #define PIN_DTR 25 #define PIN_TX 26 #define PIN_RX 27 #define PWR_PIN 4 #define BAT_ADC 35 #define BAT_EN 12 #define PIN_RI 33 #define PIN_DTR 25 #define RESET 5 #define SD_MISO 2 #define SD_MOSI 15 #define SD_SCLK 14 #define SD_CS 13 #include #include TinyGsm modem(SerialAT); TinyGsmClient gsm_client(modem); #define SMTP_HOST "" #define SMTP_PORT esp_mail_smtp_port_587 #define AUTHOR_EMAIL "" #define AUTHOR_PASSWORD "" #define RECIPIENT_EMAIL "" SMTPSession smtp; void smtpCallback(SMTP_Status status); void setup() { SerialMon.begin(115200); smtp.debug(1); smtp.callback(smtpCallback); delay(10); pinMode(BAT_EN, OUTPUT); digitalWrite(BAT_EN, HIGH); // A7670 Reset pinMode(RESET, OUTPUT); digitalWrite(RESET, LOW); delay(100); digitalWrite(RESET, HIGH); delay(3000); digitalWrite(RESET, LOW); pinMode(PWR_PIN, OUTPUT); digitalWrite(PWR_PIN, LOW); delay(100); digitalWrite(PWR_PIN, HIGH); delay(1000); digitalWrite(PWR_PIN, LOW); DBG("Wait..."); delay(3000); SerialAT.begin(UART_BAUD, SERIAL_8N1, PIN_RX, PIN_TX); // Restart takes quite some time // To skip it, call init() instead of restart() DBG("Initializing modem..."); if (!modem.init()) { DBG("Failed to restart modem, delaying 10s and retrying"); return; } /* 2 Automatic 13 GSM Only 14 WCDMA Only 38 LTE Only */ modem.setNetworkMode(38); if (modem.waitResponse(10000L) != 1) { DBG(" setNetworkMode faill"); } String name = modem.getModemName(); DBG("Modem Name:", name); String modemInfo = modem.getModemInfo(); DBG("Modem Info:", modemInfo); Session_Config config; config.server.host_name = SMTP_HOST; config.server.port = SMTP_PORT; config.login.email = AUTHOR_EMAIL; config.login.password = AUTHOR_PASSWORD; config.login.user_domain = F("127.0.0.1"); SMTP_Message message; message.sender.name = F("ESP Mail"); message.sender.email = AUTHOR_EMAIL; message.subject = F("Test sending plain text Email using GSM module"); message.addRecipient(F("Someone"), RECIPIENT_EMAIL); message.text.content = "This is simple plain text message"; smtp.setGSMClient(&gsm_client, &modem, GSM_PIN, apn, gprsUser, gprsPass); smtp.connect(&config); if (!MailClient.sendMail(&smtp, &message)) Serial.println("Error sending Email, " + smtp.errorReason()); } void loop() { } void smtpCallback(SMTP_Status status) { Serial.println(status.info()); if (status.success()) { Serial.println("----------------"); MailClient.printf("Message sent success: %d\n", status.completedCount()); MailClient.printf("Message sent failed: %d\n", status.failedCount()); Serial.println("----------------\n"); for (size_t i = 0; i < smtp.sendingResult.size(); i++) { SMTP_Result result = smtp.sendingResult.getItem(i); MailClient.printf("Message No: %d\n", i + 1); MailClient.printf("Status: %s\n", result.completed ? "success" : "failed"); MailClient.printf("Date/Time: %s\n", MailClient.Time.getDateTimeString(result.timestamp, "%B %d, %Y %H:%M:%S").c_str()); MailClient.printf("Recipient: %s\n", result.recipients.c_str()); MailClient.printf("Subject: %s\n", result.subject.c_str()); } Serial.println("----------------\n"); smtp.sendingResult.clear(); } }