INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
NODEMCU sendet keine Email mehr
13.12.2018, 18:21
Beitrag #1
NODEMCU sendet keine Email mehr
Hallo,
nach dem Beispiel GMail Sender hatte ich mir vor einigen Tagen den Nodemcu incl. Bewegungsmelder eingerichtet. Und das funktionierte als standalone mit entspr. Stromversorgung einwandfrei. Hatte im Laufe des Tages ca. 20 Mails von meinem Googleaccount auf gmx-Adresse bekommen. Abends abgeschalten.
Heute will ich noch etwas verändern, da zeigt mir der Monitor im unveränderten Zustand:

Connection: ESTABLISHED
Got IP address: xxx.xxx.xxx.xxx
Error sending message: Could not connect to mail server

Den ganzen Tag Fehlersuche. Nichts half. Deshalb meine Frage:
Läßt google das nicht mehr zu?
kann es an meiner zw.zeitlichen Aktualisierung der Bibliotheken liegen?
Welche Prüfmöglichkeiten hätte ich denn noch?

Wäre schön, wenn ich hier weiterkäme.
Miranda
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.12.2018, 18:27
Beitrag #2
RE: NODEMCU sendet keine Email mehr
Wenn Du nichts neu hoch geladen hast, dann können sich auch keine veränderten Libs auswirken.

Zeige uns doch mal Deinen Sketch und gib uns Links zu den verwendeten Libs.
Stelle Deinen Sketch bitte in Codetags.
Wie das geht, steht hier.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.12.2018, 18:45
Beitrag #3
RE: NODEMCU sendet keine Email mehr
Ich habe zuletzt den Originalcode von "Gmail Sender" getestet, der auch vorher ging.

Code:
#include <ESP8266WiFi.h>
#include "Gsender.h"

#pragma region Globals
const char* ssid = "xxxxxxxxxx";                           // WIFI network name
const char* password = "yyyyyyyyyyyy";                       // WIFI network password
uint8_t connection_state = 0;                    // Connected to WIFI or not
uint16_t reconnect_interval = 10000;             // If not connected wait time to try again
#pragma endregion Globals

uint8_t WiFiConnect(const char* nSSID = nullptr, const char* nPassword = nullptr)
{
    static uint16_t attempt = 0;
    Serial.print("Connecting to ");
    if(nSSID) {
        WiFi.begin(nSSID, nPassword);  
        Serial.println(nSSID);
    } else {
        WiFi.begin(ssid, password);
        Serial.println(ssid);
    }

    uint8_t i = 0;
    while(WiFi.status()!= WL_CONNECTED && i++ < 50)
    {
        delay(200);
        Serial.print(".");
    }
    ++attempt;
    Serial.println("");
    if(i == 51) {
        Serial.print("Connection: TIMEOUT on attempt: ");
        Serial.println(attempt);
        if(attempt % 2 == 0)
            Serial.println("Check if access point available or SSID and Password\r\n");
        return false;
    }
    Serial.println("Connection: ESTABLISHED");
    Serial.print("Got IP address: ");
    Serial.println(WiFi.localIP());
    return true;
}

void Awaits()
{
    uint32_t ts = millis();
    while(!connection_state)
    {
        delay(50);
        if(millis() > (ts + reconnect_interval) && !connection_state){
            connection_state = WiFiConnect();
            ts = millis();
        }
    }
}

void setup()
{
    Serial.begin(115200);
    connection_state = WiFiConnect();
    if(!connection_state)  // if not connected to WIFI
        Awaits();          // constantly trying to connect

    Gsender *gsender = Gsender::Instance();    // Getting pointer to class instance
    String subject = "Subject is optional!";
    if(gsender->Subject(subject)->Send("zzzzzzz@gmx.de", "Setup test")) {
        Serial.println("Message send.");
    } else {
        Serial.print("Error sending message: ");
        Serial.println(gsender->getError());
    }
}

void loop(){}

Und auch der zugehörige Gsender.h

Code:
/* Gsender class helps send e-mails from Gmail account
*  using Arduino core for ESP8266 WiFi chip
*  by Boris Shobat
*  September 29 2016
*/
#ifndef G_SENDER
#define G_SENDER
#define GS_SERIAL_LOG_1         // Print to Serial only server responce
//#define GS_SERIAL_LOG_2       //  Print to Serial client commands and server responce
#include <WiFiClientSecure.h>

class Gsender
{
    protected:
        Gsender();
    private:
        const int SMTP_PORT = 465;
        const char* SMTP_SERVER = "smtp.gmail.com";
        const char* EMAILBASE64_LOGIN = "email mit base64";
        const char* EMAILBASE64_PASSWORD = "PW mit base64";
        const char* FROM = "meine_adresse@gmail.com";
        const char* _error = nullptr;
        char* _subject = nullptr;
        String _serverResponce;
        static Gsender* _instance;
        bool AwaitSMTPResponse(WiFiClientSecure &client, const String &resp = "", uint16_t timeOut = 10000);

    public:
        static Gsender* Instance();
        Gsender* Subject(const char* subject);
        Gsender* Subject(const String &subject);
        bool Send(const String &to, const String &message);
        String getLastResponce();
        const char* getError();
};
#endif // G_SENDER
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.12.2018, 21:28
Beitrag #4
RE: NODEMCU sendet keine Email mehr
Zur Gsender.h gehört auch noch eine Gsender.cpp, deswegen wollte ich einen Link auf die Lib.
Die Lib arbeitet mit dem WiFiClientSecure. Es könnte sein, dass der Key von Gmail abgelaufen ist und Du einen neuen Fingerprint brauchst.

Was sagen denn die seriellen Ausgaben des Testsketches?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2018, 10:18
Beitrag #5
RE: NODEMCU sendet keine Email mehr
Hier ist der ganze Spaß her:
https://www.instructables.com/id/ESP8266-GMail-Sender/
Unde wie geschrieben, es hatte funktioniert.
Anzeige im seriellen Monitor habe ich bereits im 1. Thread geschrieben.
Was wäre denn die Ursache, dass ein solcher Fingerprint abläuft und wie komme ich zu einem neuen?

Gsender.cpp:
Code:
#include "Gsender.h"
Gsender* Gsender::_instance = 0;
Gsender::Gsender(){}
Gsender* Gsender::Instance()
{
    if (_instance == 0)
        _instance = new Gsender;
    return _instance;
}

Gsender* Gsender::Subject(const char* subject)
{
  delete [] _subject;
  _subject = new char[strlen(subject)+1];
  strcpy(_subject, subject);
  return _instance;
}
Gsender* Gsender::Subject(const String &subject)
{
  return Subject(subject.c_str());
}

bool Gsender::AwaitSMTPResponse(WiFiClientSecure &client, const String &resp, uint16_t timeOut)
{
  uint32_t ts = millis();
  while (!client.available())
  {
    if(millis() > (ts + timeOut)) {
      _error = "SMTP Response TIMEOUT!";
      return false;
    }
  }
  _serverResponce = client.readStringUntil('\n');
#if defined(GS_SERIAL_LOG_1) || defined(GS_SERIAL_LOG_2)
  Serial.println(_serverResponce);
#endif
  if (resp && _serverResponce.indexOf(resp) == -1) return false;
  return true;
}

String Gsender::getLastResponce()
{
  return _serverResponce;
}

const char* Gsender::getError()
{
  return _error;
}

bool Gsender::Send(const String &to, const String &message)
{
  WiFiClientSecure client;
#if defined(GS_SERIAL_LOG_2)
  Serial.print("Connecting to :");
  Serial.println(SMTP_SERVER);  
#endif
  if(!client.connect(SMTP_SERVER, SMTP_PORT)) {
    _error = "Could not connect to mail server";
    return false;
  }
  if(!AwaitSMTPResponse(client, "220")) {
    _error = "Connection Error";
    return false;
  }

#if defined(GS_SERIAL_LOG_2)
  Serial.println("HELO friend:");
#endif
  client.println("HELO friend");
  if(!AwaitSMTPResponse(client, "250")){
    _error = "identification error";
    return false;
  }

#if defined(GS_SERIAL_LOG_2)
  Serial.println("AUTH LOGIN:");
#endif
  client.println("AUTH LOGIN");
  AwaitSMTPResponse(client);

#if defined(GS_SERIAL_LOG_2)
  Serial.println("EMAILBASE64_LOGIN:");
#endif
  client.println(EMAILBASE64_LOGIN);
  AwaitSMTPResponse(client);

#if defined(GS_SERIAL_LOG_2)
  Serial.println("EMAILBASE64_PASSWORD:");
#endif
  client.println(EMAILBASE64_PASSWORD);
  if (!AwaitSMTPResponse(client, "235")) {
    _error = "SMTP AUTH error";
    return false;
  }
  
  String mailFrom = "MAIL FROM: <" + String(FROM) + '>';
#if defined(GS_SERIAL_LOG_2)
  Serial.println(mailFrom);
#endif
  client.println(mailFrom);
  AwaitSMTPResponse(client);

  String rcpt = "RCPT TO: <" + to + '>';
#if defined(GS_SERIAL_LOG_2)
  Serial.println(rcpt);
#endif
  client.println(rcpt);
  AwaitSMTPResponse(client);

#if defined(GS_SERIAL_LOG_2)
  Serial.println("DATA:");
#endif
  client.println("DATA");
  if(!AwaitSMTPResponse(client, "354")) {
    _error = "SMTP DATA error";
    return false;
  }
  
  client.println("From: <" + String(FROM) + '>');
  client.println("To: <" + to + '>');
  
  client.print("Subject: ");
  client.println(_subject);
  
  client.println("Mime-Version: 1.0");
  client.println("Content-Type: text/html; charset=\"UTF-8\"");
  client.println("Content-Transfer-Encoding: 7bit");
  client.println();
  String body = "<!DOCTYPE html><html lang=\"en\">" + message + "</html>";
  client.println(body);
  client.println(".");
  if (!AwaitSMTPResponse(client, "250")) {
    _error = "Sending message error";
    return false;
  }
  client.println("QUIT");
  if (!AwaitSMTPResponse(client, "221")) {
    _error = "SMTP QUIT error";
    return false;
  }
  return true;
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2018, 12:16 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2018 12:26 von Tommy56.)
Beitrag #6
RE: NODEMCU sendet keine Email mehr
Er verwendet intern den Fingerprint nicht.
Was sagt die Fehlerausgabe auf dem seriellen Monitor?
Lass Dir doch nicht jede Angabe einzeln aus der Nase ziehen.

Sorry überlesen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2018, 12:22
Beitrag #7
RE: NODEMCU sendet keine Email mehr
(14.12.2018 12:16)Tommy56 schrieb:  Was sagt die Fehlerausgabe auf dem seriellen Monitor?

Connection: ESTABLISHED
Got IP address: xxx.xxx.xxx.xxx
Error sending message: Could not connect to mail server

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2018, 12:46 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2018 12:48 von Tommy56.)
Beitrag #8
RE: NODEMCU sendet keine Email mehr
Danke Fips, das hatte ich glatt überlesen.

Die aktuelle Version von WiFiClientSecure.h ist nicht mehr eigenständig, sondern nur noch ein Verweis auf WiFiClientSecureBearSSL.h.
Da könnte es sein, dass die alten Programme nicht mehr funktionieren bzw. die neue Lib zwingend einen Fingerprint braucht. Meine Aussage, dass der nicht verwendet wird, ist damit hinfällig.

Aktiviere mal zusätzlich das LOG2 in der Lib. Wenn das auch keine Erkenntnisse bringt, dann bleiben nur noch detailierte serielle Ausgaben im Connect, um irgend einen Fehlercode zu finden.
Den Fingerprint über den Browser auszulesen funktioniert nicht, da der Port für Browser geblockt ist.

Alternative: Man kann den alten Status wieder aktivieren. Steht in der WiFiClientSecure.h drin, wie es geht.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP32 verbindet nicht mehr mit meiner Fritz Box spok1 12 119 Heute 11:22
Letzter Beitrag: Hilgi
  FTP client kann keine Daten empfangen I-Azubi 2 168 10.05.2019 08:53
Letzter Beitrag: Fips
  Emailversand über Gmail geht nicht mehr Franzel007 5 1.182 07.02.2019 17:13
Letzter Beitrag: Tommy56
  NodeMCU bleibt hängen. Wie bekommen ich das mit eine Watchdog hin Franzel007 5 1.123 06.02.2019 18:53
Letzter Beitrag: Franzel007
Question 2x16 LCD an 8266/NodeMCU? ansorgj 4 1.101 25.01.2019 00:24
Letzter Beitrag: Fips
  NodeMCU und HC-SR501 Sensor komisches verhalten Ardu2018 19 6.428 11.01.2019 09:49
Letzter Beitrag: HansDampf
  Keine Cache-Nutzung 1.8.7 + 2.4.2 Tommy56 8 1.666 25.12.2018 23:56
Letzter Beitrag: Tommy56
  ESP32 (AzureIoT + BLE in keine Header-Dateien) ChrisL 7 1.577 01.12.2018 13:45
Letzter Beitrag: ChrisL
  NodeMCU Push Nachricht JanReum 3 1.739 03.11.2018 08:52
Letzter Beitrag: Fips
  NodeMCU und Nano über I2C verbinden Werte sind falsch Franzel007 4 1.272 11.10.2018 12:16
Letzter Beitrag: Franzel007

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste