Hey Zusammen,
ich habe mit diesem Codebeispel mal versucht eine Mail zu verschicken:
/*
Email client sketch for IDE v1.8.1 and w5100
*/
//Used Modules: Arduino Mega + W5100 Ethernet shield.
#include <SPI.h>
#include <Ethernet.h>
// this must be unique
byte mac[] = { 0x90, 0xEF, 0xDA, 0x00, 0x59, 0xEE };
// change network settings to yours
IPAddress myIp(192, 168, 178, 182);
IPAddress gateway(192, 168, 178, 1);
IPAddress subnet(255, 255, 255, 0);
char server[] = "mail.smtp2go.com";
int port = 2525; // You can also try using Port Number 25, 8025 or 587.
const String emailAdressReciever = "XXX@XXX.XX";
const String emailAdressTransmitter = "XXX@XXX.XX";
const String usernameBase64EmailAdressTransmitter = "XXX==";
const String passwordBase64EmailAdressTransmitter = "XXX";
EthernetClient client;
void setup()
{
Serial.begin(115200);
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
Ethernet.begin(mac, myIp);
delay(2000);
Serial.println(Ethernet.localIP());
Serial.println(F("Ready. Press 'e' to send."));
}
void loop()
{
byte inChar;
inChar = Serial.read();
if (inChar == 'e')
{
if (sendEmail()) Serial.println(F("Email sent"));
else Serial.println(F("Email failed"));
}
}
byte sendEmail()
{
byte thisByte = 0;
byte respCode;
if (client.connect(server, port) == 1) {
Serial.println(F("connected"));
}
else {
Serial.println(F("connection failed"));
return 0;
}
if (!eRcv()) return 0;
String dataToSend;
// replace 1.2.3.4 with your Arduino's ip
String myIPString = String(myIp[0]) + "." + String(myIp[1]) + "." + String(myIp[2]) + "." + String(myIp[3]);
dataToSend = "EHLO " + myIPString;
Serial.println(dataToSend);
client.println(dataToSend);
if (!eRcv()) return 0;
dataToSend = "auth login";
Serial.println(dataToSend);
client.println(dataToSend);
if (!eRcv()) return 0;
dataToSend = usernameBase64EmailAdressTransmitter;
Serial.println(dataToSend);
// Change to your base64 encoded user
client.println(dataToSend);
if (!eRcv()) return 0;
dataToSend = passwordBase64EmailAdressTransmitter;
Serial.println(dataToSend);
// change to your base64 encoded password -> OK
client.println(dataToSend);
if (!eRcv()) return 0;
// change to your email address (sender)
dataToSend = "MAIL From: <" + emailAdressTransmitter + ">";
Serial.println(dataToSend);
client.println(dataToSend);
if (!eRcv()) return 0;
// change to recipient address -> OK
dataToSend = "RCPT To: <" + emailAdressReciever + ">";
Serial.println(dataToSend);
client.println(dataToSend);
if (!eRcv()) return 0;
dataToSend = "DATA";
Serial.println(dataToSend);
client.println(dataToSend);
if (!eRcv()) return 0;
// change to recipient address -> OK
dataToSend = "To: Rachel <fabianfippl@outlook.de";
dataToSend += "\r\n";
dataToSend += "From: MalagaWLAN_Anwesenheitsüberwachng <" + emailAdressTransmitter + ">";
dataToSend += "\r\n";
dataToSend += "Subject: Your Subject";
dataToSend += "\r\n";
dataToSend += "Hi!Simple test message";
dataToSend += "\r\n";
dataToSend += ".";
Serial.println(dataToSend);
client.println(dataToSend);
if (!eRcv()) return 0;
dataToSend = "QUIT";
Serial.println(dataToSend);
client.println(dataToSend);
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"));
}
Leider kommt immer folgende Fehlermeldung vom Server zurück:
550 that smtp username's account is not allowed to send
Was bedeutet das?
Muss für SMTP2GO noch mehr einrichten, als nur einen Account?
Nach dem Video hier: https://www.youtube.com/watch?v=WBcnYa6CY9Y ist das ganz simpel beschrieben, aber so läuft es wohl leider nicht...oder nicht mehr.
Auf dem Dashboard von SMTP2GO sehe ich das hier:
Hat jemand ne Idee? Muss ich jetzt noch eine Domain registrieren oder gibt's auch eine andere Lösung Mails vom Arduino zu versenden?