e-Mail mit Arduino versenden

Hallo guten morgen, ich wünsche euch frohe Weihnachten!

Nun mal zu meinem Problem. Ich habe mir eine Lichtschranke zugelegt und an meinem Arduino montiert. Das funktioniert prima. LED an oder aus, je nach dem ob die Lichtschranke unterbrochen ist oder nicht.

Jetzt hätte ich gerne das wenn die Lichtschranke unterprochen wird, der Arduino eine E-Mail verschickt.

Ich habe bereits 2 Codes ausprobiert, aber es funktioniert nicht!

Daher meine Frage, ob jemand ein gutes Tutorial hierfür kennt.

Gruß Sven

Dann musst du uns noch mitteilen, mit welchem Modul du die Netzwerkverbindung aufbaust.
Nur der Arduino reicht nicht.

Hallo,

vielleicht zu allererst die grundlegende Problematik:

e-Mail Server setzen heute fast immer Verschlüsselung voraus. Am PC oder auch auf einem halbwegs aktuellen Smartphone geht das problemlos, den kleinen Arduinos fehlt dafür aber die notwendige Leistung (Speicher,...).

Also benötigt man einen der sehr raren Maildiense die noch ohne Verschlüsslung können.

Tante Google bringt viel Lesestoff zum Thema "email without SSL" oder "email ohne SSL"

Eine Möglichkeit die ich angedacht - aber nie realisiert - habe wäre ein PHP Mailer auf einem Webserver den man vom Arduino aus anspricht.

Christian

Hey, mit ehternet shild, nach email Server ohne ssl schau ich mal... gibt es dann ein einfaches funktionierendes script?

daMeier:
Hey, mit ehternet shild, nach email Server ohne ssl schau ich mal... gibt es dann ein einfaches funktionierendes script?

Natürlich gibt es viele Sketche, aber evtl. schreibst du uns welches Ethernet-Shield du verwendest. Ansonsten ist Google dein Freund.

http://playground.arduino.cc/Code/Email

Aber einfach wird es nicht, ohne entsprechendem Wissen.

Hey,

ich habe den Arduino Leonardo ETH.

Gruß

daMeier:
ich habe den Arduino Leonardo ETH.

Und wo ist das Problem?

Auf dieser Seite findest du sehr viele Informationen zu deinem Board.
http://labs.arduino.org/Arduino%20leonardo%20eth

Du musst hier nur nach dem richtigen Begriff suchen.

Hey,

hab das jetzt, denke ich am laufen, scheitere aber an dem unverschlüsselten Mailsystem. Möchte mir weder einen Mailserver noch ein NAS aufsetzten um meine Unverschlüsselten Mails, verschlüsselt weiter zu senden.

Habe es mal mit smart-mail.de versucht, das klappt nicht. Habt ihr eine Idee für nene Mailanbieter ohne Verschlüsselung?

Gruß

Hallo,

habe es mit der Anleitung gemacht und es funktioniert super!

http://mt101040.students.fhstp.ac.at/iai/doku.html

E-Mail dienst ohne SSL:

und deinen Benutzernamen und Passwort musst du in Base64 angeben..

einfach auf https://www.base64encode.org/ gehen und dein benutzer eingeben und Encode drücken..
Dieser Code entspricht dann deinem Benutzer..

Hey,

werde es mal ausprobieren.

Ich habe folgenden Code laufen, es kommt aber eine Fehlermeldung zurück die laut Smart-Mail bedeutet, das das Programm keine korrekten Mailbefehle nutzt. Was ich komisch finde, hier kann ich nirgends mein Kennwort eingeben.

#include <SPI.h>
#include <Ethernet2.h>


// Set the panic button pin
byte panicButton = 2;
boolean statusCheck=false; 
// this must be unique
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67 };  
// change network settings to yours
IPAddress ip( 192, 168, 1, 200 );    
IPAddress gateway( 192, 168, 1, 5 );
IPAddress subnet( 255, 255, 255, 0 );

// change server to your email server ip or domain
// IPAddress server( 1, 2, 3, 4 );
char server[] = "smtp.smart-mail.com";

EthernetClient client;

void setup()
{
  Serial.begin(9600);
  pinMode(4,OUTPUT);
  digitalWrite(4,HIGH);
  Ethernet.begin(mac, ip, gateway, gateway, subnet); 
  delay(2000);
  Serial.println(F("Ready."));
  pinMode(panicButton, INPUT);
}

void loop()
{


  if(digitalRead(panicButton)==LOW && statusCheck==false)
  {
      if(sendEmail()) Serial.println(F("Email sent"));
      else Serial.println(F("Email failed"));
		statusCheck = true;
  }
  else if (digitalRead(panicButton)==HIGH)
  {
	statusCheck = false; 
  }
}

byte sendEmail()
{
  byte thisByte = 0;
  byte respCode;

  if(client.connect(server,25)) {
    Serial.println(F("connected"));
  } else {
    Serial.println(F("connection failed"));
    return 0;
  }

  if(!eRcv()) return 0;

// change to your public ip
  client.println(F("helo 1.2.3.4"));

  if(!eRcv()) return 0;
  Serial.println(F("Sending From"));

// change to your email address (sender)
  client.println(F("MAIL From: <Test@test.de"));

  if(!eRcv()) return 0;

// change to recipient address
  Serial.println(F("Sending To"));
  client.println(F("RCPT To: <test@test.de"));

  if(!eRcv()) return 0;

  Serial.println(F("Sending DATA"));
  client.println(F("DATA"));

  if(!eRcv()) return 0;

  Serial.println(F("Sending email"));

// change to recipient address
  client.println(F("To: You <test@test.de>"));

// change to your address
  client.println(F("From: Me <test@test.de>"));

  client.println(F("Subject: Panic Alarm!\r\n"));

  client.println(F("The panic button was pressed!!!"));

  client.println(F("."));

  if(!eRcv()) return 0;

  Serial.println(F("Sending QUIT"));
  client.println(F("QUIT"));

  if(!eRcv()) return 0;

  client.stop();

  Serial.println(F("disconnected"));

  return 1;
}

byte eRcv()
{
  byte respCode;
  byte thisByte;
  int loopCount = 0;

  while(!client.available()) {
    delay(1);
    loopCount++;

    // if nothing received for 10 seconds, timeout
    if(loopCount > 10000) {
      client.stop();
      Serial.println(F("\r\nTimeout"));
      return 0;
    }
  }

  respCode = client.peek();

  while(client.available())
  {  
    thisByte = client.read();    
    Serial.write(thisByte);
  }

  if(respCode >= '4')
  {
    efail();
    return 0;  
  }

  return 1;
}


void efail()
{
  byte thisByte = 0;
  int loopCount = 0;

  client.println(F("QUIT"));

  while(!client.available()) {
    delay(1);
    loopCount++;

    // if nothing received for 10 seconds, timeout
    if(loopCount > 10000) {
      client.stop();
      Serial.println(F("\r\nTimeout"));
      return;
    }
  }

  while(client.available())
  {  
    thisByte = client.read();    
    Serial.write(thisByte);
  }

  client.stop();

  Serial.println(F("disconnected"));
}

Hast du dir den Link von m0nn3 überhaupt angesehen? Ich sehe bei dir den Schritt der Authorisierung nicht.

Hey,

ich sitze gerade dran. habe wie folgt umgebaut, jetzt heißt es zwar, das die mail verschickt wurde, es kommt aber nichts ...

#include <SPI.h>
#include <Ethernet2.h>


byte panicButton = 2;
boolean statusCheck=false; 
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67 };  
IPAddress ip( 192, 168, 1, 200 );    
IPAddress gateway( 192, 168, 1, 5 );
IPAddress subnet( 255, 255, 255, 0 );
// IPAddress server( 1, 2, 3, 4 );
char server[] = "smtp.smart-mail";

EthernetClient client;

void setup()
{
  Serial.begin(9600);
  pinMode(4,OUTPUT);
  digitalWrite(4,HIGH);
  Ethernet.begin(mac, ip, gateway, subnet); 
  delay(2000);
  Serial.println(F("Ready."));
  pinMode(panicButton, INPUT);
}

void loop()
{


  if(digitalRead(panicButton)==LOW && statusCheck==false)
  {
      if(sendEmail()) Serial.println(F("Email sent"));
      else Serial.println(F("Email failed"));
		statusCheck = true;
  }
  else if (digitalRead(panicButton)==HIGH)
  {
	statusCheck = false; 
  }
}

byte sendEmail()
{   
  Serial.println("connecting...");
  if (client.connect(server, 25)) {
    Serial.println("connected");
    client.println("EHLO MYSERVER");
    // Authentication
    client.println("AUTH PLAIN ***"); 
    client.println("MAIL FROM:<test@test.de>");
    client.println("RCPT TO:<test@test.de>");
    client.println("DATA");
    client.println("TO: <Test@test.de>");
    client.println("From: Arduino Pelletüberwachung <Sven.Meier@Smart-Mail.com>");
    client.println("SUBJECT: Arduino Temperaturwarnung");
    client.println();
    client.println("Wichtige Nachricht von Arduino:");
    client.print("Die Temperatur beträgt ");
     client.println(" Grad!");
    client.println(".");
    client.println("quit");
    client.stop();
  } else {
   client.println("Connection failed"); 
  }
}
client.println("AUTH PLAIN ***");

Das ist falsch, und wird auch in dem Tutorial erwähnt. Nicht Copy&Paste bis zum Ende des Sketches und fertig. Erst zuende lesen und dann ransetzen.

Klar ist das nicht das was in meinem Skript steht! :wink: soll ich dir mein Kennwort da rein schreiben?

Aber ich gebe dir dahingehend recht, ich bin mir nicht sicher, was die Schreibweise hier angeht...

Bei MAIL FROM habe ich jetzt hier mal test@test.de umgewandelt eingetragen. und bei Kennwort habe ich jetzt mal Kennwort umgewandelt stehen, aber ist das dort so richtig?

client.println("AUTH PLAIN S2VubndvcnQ=");
client.println("MAIL FROM:");

bekomme mitlerweile einen fehler beim sendevorgang, leider ohne fehlercode...