Go Down

Topic: eMail mit Arduino senden (Read 5818 times) previous topic - next topic

lgrube96

Hallo zusammen,

ich habe da mal wieder ein Problem mit dem ich mich schon ein zwei Tage durcharbeite, aber irgendwie nicht vorrankomme.

Und zwar würde ich gerne eine eMail mit meinem Arduino Mega + Ethernet Shield verschicken.
Ich verwende dazu folgenden Sketch. An sich habe ich den so im Internet fertig gefunden, ich habe noch die Sache mit "auth login" hinzugefügt, weil ohne eine Anmeldung würde das glaube ich nicht mehr gehen (habe es auch ausprobiert, funtkioniert nicht):

Code: [Select]
#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x44, 0x70 };
byte ip[] = { 192, 168, 2, 109 };
byte server[] = { 205, 188, 186, 137 }; // IP von smtp.aol.com

EthernetClient client;

void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
 
  delay(1000);
 
  Serial.println("connecting...");
 
  if (client.connect(server, 25)) {
    Serial.println("connected");
    client.println("HELO test");
    client.println("auth login");
    client.println("Meine eMail in BASE64");
   client.println("Mein Passwort in BASE64");
   client.println("MAIL FROM: meineemail@aol.de");
   client.println("RCPT TO: meineemail@aol.de"); //wollte einfach eine email an mich selber senden
   client.println("DATA");
   client.println("SUBJECT: Arduino sendet Email");
   client.println();
   client.println("Erster Test.");
   client.println(".");
   client.println("QUIT");
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }
 
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
    ;
  }
}


Und das bekomme ich im Serial Monitor:
connecting...
connected
220-mtaout-da01.r1000.mx.aol.com ESMTP MUA/Third Party Client Interface
220-AOL and its affiliated companies do not
220-authorize the use of its proprietary computers and computer
220-networks to accept, transmit, or distribute unsolicited bulk
220-e-mail sent from the internet.
220-Effective immediately:
220-AOL may no longer accept connections from IP addresses
220 which no reverse-DNS (PTR record) assigned.
250 mtaout-da01.r1000.mx.aol.com
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 2.7.0 Authentication successful
250 2.1.0 Ok
250 2.1.5 Ok
503 5.5.0 <DATA>: Data command rejected: Improper use of SMTP command pipelining
221 2.7.0 Error: I can break rules, too. Goodbye.

disconnecting.


So wie man auch sieht, funktioniert leider bisher "nur" die Identifiezierung mit Email und passwort bis hin kurz vor dem endgültigen Absenden.

Die Anleitung mit auth login habe ich hierher: http://www.kongtechnology.com/2008/01/27/smtp-authentication-and-send-emails-using-telnet/
Ich habe dann auch mal versucht über die Konsole (cmd, windows) eine telnet Verbindung mit smtp.aol.com herzustellen.
Funktionierte auch alles eigentlich, nur wenn ich dann am Schluss den "." ein tippe und enter drücke kommt immer:
Quote
521 AOL will not accept delivery of this message


Leider bin ich nicht so schlau und kann da sofort was rausschließen.

Also entweder mache ich grundsätzlich etwas falsch oder ich habe irgendetwas übersehen !?
Muss ich mir da eine andere Lösung suchen, wenn ja, welche ?

Hoffe ich habe alles relativ gut beschrieben, die Zeit ist zur Zeit leider etwas zu knapp um alles ausführlichst zu beschreiben.
Denke aber so grob sollte das reichen !

Vielen Dank schonmal !

Grüße
Lorenz

Klaus_ww

Ich empfehle, per Telnet den grundsätzlich möglichen Erfolg zunächst zu testen.
ich hab mir den Wolf debugged .....

Wenn Telnet geht dann weisst Du auch woran dein sketch scheitert.

lgrube96

Ja ok, da hast du wirklich Recht !

Muss mir dann wohl noch ein passendes Forum suchen...
melde mich dann, wenn ich das Problem behoben habe !

Grüße
Lorenz


Klaus_ww

Dazu braucht's kein Forum, der grundsätzliche Weg dürfte ja klar sein. Bei mir war's der Auth String, da bin ich immer drüberstolpert.

lgrube96

Joa habe ich auch gerade gedacht, aber da ich schon mehrere Anleitungen durchprobiert habe und immer der gleich Fehler kommt, wäre da ein Forum schon ganz hilfreich. Muss aber mal sehen ob das nicht auch irgendwie alleine auf die Beine gestellt bekomme !

uwefed

Normalerweise werden Emails ohne Autentifizierung versendet und zwar an den Emaildienst Deines Providers. Wie machst Du es in Deinem Email-Programm?
Grüße Uwe

-Holger-

Hi,

Lass mich raten, alle deine Versuche gingen an AOL?

Die Antwort des Servers sagt doch wenn ich richtig rate (in IT-Englisch ]:) ), dass AOL unter umständen keine Mails von - nennen wir es mal - Privatrechnern (ohne reverse DNS) entgegennimmt. Zugegeben, der Bulk-Teil ist mir nicht klar ... Bulk Mails = massenmails. Vielleicht hätte es ja beim allerersten versuch geklappt, aber du hast es zu oft versucht und AOL hat die Verbindungen gezählt.

Daher werden dich keine Tutorials weiter bringen, solange du an AOL hängst.

Vorschlag: Neue IP besorgen oder ne Nacht schlafen und es morgen nochmal versuchen.

Marcus W

Ich find ja die Reject-Message genial: "I can break rules too. Goobye." - hört sich ein bisschen eingeschnappt ein  :smiley-mr-green:

Fakt ist, dass wenn dein du keine Reverse-DNS-Auflösung hast, werden deine E-Mails von vielen E-Mail-Servern abgeleht. Reverse-DNS bedeutet, dass der Server, der die E-Mail sendet auch mit dem Namen des Senders aufgelöst werden muss. Konkret heißt das: wenn die Mail von test@example.com kommt, muss die IP des Senders ebenfalls auf example.com zeigen.

Du brauchst also auf jedenfall einen E-Mail-Server, der dir deine Mail verschickt inklusive eines Accounts.

Ich probier mal kurz ein bisschen herum

lgrube96


Normalerweise werden Emails ohne Autentifizierung versendet und zwar an den Emaildienst Deines Providers. Wie machst Du es in Deinem Email-Programm?
Grüße Uwe


Das sehe ich genau so ! Aber irgendwie funtkioniert das bei mir nicht so ganz, ob ich das jetzt mit oder ohne authentifizierung mache, ändert leider nichts. Beides bringt keinen wirklichen Erfolg.
Meinst du mit email programm z.B. outlook ?!

Lass mich raten, alle deine Versuche gingen an AOL?


Jap ich habe es mit aol probiert, da es mit anderen wie windows live und t-online absolut nicht klappte.

Quote
Die Antwort des Servers sagt doch wenn ich richtig rate (in IT-Englisch ]:) ), dass AOL unter umständen keine Mails von - nennen wir es mal - Privatrechnern (ohne reverse DNS) entgegennimmt. Zugegeben, der Bulk-Teil ist mir nicht klar ... Bulk Mails = massenmails. Vielleicht hätte es ja beim allerersten versuch geklappt, aber du hast es zu oft versucht und AOL hat die Verbindungen gezählt.

Vorschlag: Neue IP besorgen oder ne Nacht schlafen und es morgen nochmal versuchen.


Das habe ich vorhin auch schon entdeckt, konnte aber nicht alles so genau verstehen was die damit so meinen.
Ich kann ja morgen nochmal versuchen, mal sehen ob das so das Problem war  :smiley-mr-green:
Hoffe nicht, sonst könnte ich ja gar nicht sooo viele mails senden -_-


Ich find ja die Reject-Message genial: "I can break rules too. Goobye." - hört sich ein bisschen eingeschnappt ein  :smiley-mr-green:


Jap das fand ich auch etwas lächerlich :D

Quote
Fakt ist, dass wenn dein du keine Reverse-DNS-Auflösung hast, werden deine E-Mails von vielen E-Mail-Servern abgeleht. Reverse-DNS bedeutet, dass der Server, der die E-Mail sendet auch mit dem Namen des Senders aufgelöst werden muss. Konkret heißt das: wenn die Mail von test@example.com kommt, muss die IP des Senders ebenfalls auf example.com zeigen.

Du brauchst also auf jedenfall einen E-Mail-Server, der dir deine Mail verschickt inklusive eines Accounts.

Ich probier mal kurz ein bisschen herum


okaaay, da verstehe ich jetzt gerade nicht soo viel von. Also wenn ich eine email an test@aol.de senden möchte muss ich auch den Server smtp.aol.com verwenden. Das ist mir auch soweit klar...wenn es das ist was du meinst.

Viel Spaß beim probieren, mal sehen was dabei rauskommt ;)

Vielen Dank für die Antworten!
Grüße
Lorenz

uwefed

ja zB Outlook, Outlook Express oder Thunderbird.
Du mußt die Emails an DEINEN Provider senden nicht an einen x-beliebigen; nur dieser nimmt die Emails an.
Grüße Uwe

lgrube96

#10
Mar 03, 2013, 08:42 pm Last Edit: Mar 03, 2013, 09:00 pm by lgrube96 Reason: 1
Also ist es richtig wenn ich z.B. Von meiner email test@aol.de eine email an test123@aol.de ?
Wenn ja, warum geht es nicht, wenn ich eine email an mich selber sende ?!

EDIT: Habe es mal ohne Autentification über Konsole nochmal probiert und siehe da, es kommt folgendes:
Quote
rcpt to: test@aol.de
553 5.7.1 <test@aol.de>: Sender address rejected: not logged in


Von daher gehe ich mal davon aus, dass man eine anmeldung benötigt ?!

Grüße
Lorenz

qualidat

Einen (absichtlich) offenen SMTP-Server wirst du nicht finden, da wär in kürzester Zeit die Hölle los. Allgemein werden entweder POP-before-SMTP verwendet (weil man für den Zugriff aufs Postfach ebenfalls Username und Passwort braucht) oder SMTP-Auth. DIe Details stehen hier: http://de.wikipedia.org/wiki/SMTP-Auth

jurs


Joa habe ich auch gerade gedacht, aber da ich schon mehrere Anleitungen durchprobiert habe und immer der gleich Fehler kommt, wäre da ein Forum schon ganz hilfreich.


Du brauchst ein Forum, um die Fehlermeldung zu googlen?

Na ja, wenn es weiter nichts ist, dem Manne kann geholfen werden, per Link in einem Forum:
http://lmgtfy.com/?q=Improper+use+of+SMTP+command+pipelining

Kommst Du dann drauf, was Dein Programm gemeinsam hat mit Spam-Mail-Programmen?

dischneider


Normalerweise werden Emails ohne Autentifizierung versendet und zwar an den Emaildienst Deines Providers. Wie machst Du es in Deinem Email-Programm?
Grüße Uwe

Ich widerspreche Uwe wirklich nicht gern, aber diese Aussage stimmt ausschließlich für Server-Server Kommunikation.
Dein Mailprogramm macht es mit Authentication, sonst wird der Mailserver zum offenen Relay, weil jeder an jeden senden könnte.

Wie eben schon geschrieben benötigst du entweder SMTP-Auth, was du versucht hast, oder POP/IMAP-Auth.

Und wie auch eben schon geschrieben, der Grund für die Ablehnung ist ganz klar
Code: [Select]
503 5.5.0 <DATA>: Data command rejected: Improper use of SMTP command pipelining


using arduino leonardo, arduino uno ...
--
tomorrow today will only be yesterday, so live your life today!

ch-hunn


Also entweder mache ich grundsätzlich etwas falsch oder ich habe irgendetwas übersehen !?
Muss ich mir da eine andere Lösung suchen, wenn ja, welche ?


Ich vermute, dass Du zu schnell bist. Normalerweise sollte man nach jedem SMTP Kommando die Antwort des SMTP Servers abwarten, bevor man weitere Kommandis sendet.
Der Server muss ja auch die Benutzernamen/Kennwörter überprüfen. Dazu werden die Anmeldedaten an einen weiteren Server gesendet. Das benötigt seine Zeit.
Viele Server machen obendrein noch Tarpitting. Hierbei werden die Antworten des Servers künstlich verzögert. Dies gibt dem Server die Möglichkeit SPAM Bots zu erkennen oder zumindest auszubremsen. Bei einzelnen Mails spielt Tarpitting keine Rolle, ob die Transaktion jetzt 10ms oder 3000ms dauert, ein Spammer lässt sich so aber gehörig ausbremsen. :smiley-mr-green:
Du solltest also versuchen die Serverresponse auszuwerten, oder zumindest genügend Wartezeit einbauen.



Go Up