POP3 Zugriff über Sockets - wo liegt der Fehler ?
-
Moin Leute ...
folgender Code:
bool emailprüfen () { using namespace System; using namespace System::Text; using namespace System::IO; using namespace System::Net; using namespace System::Net::Sockets; using namespace System::Collections; const char *name = "USER J@online.de"; array<Byte>^ buffer = gcnew array<Byte>(256); Socket^ s = gcnew Socket (AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp ); s->Connect ("pop.1und1.de", 110); if (s->Connected == FALSE) return FALSE; while ( s->Receive ( buffer ) == 0); String^ bufferstring = Encoding::UTF8->GetString( buffer ); if (bufferstring->StartsWith ("+OK") == FALSE) return FALSE; send ( s, name , strlen (name), 0); // <-- PROBLEM return TRUE; }
erzeugt folgenden Fehler:
Fehler 1 error C2664: 'send': Konvertierung des Parameters 1 von 'System::Net::Sockets::Socket ^' in 'SOCKET' nicht möglich
Ihr habt sicher eine Idee ...
-
Wie es nunmal so ist ... habe ich den Fehler wohl gefunden. Einige blöde Fehler hab ich gemacht:
using namespace System; using namespace System::Text; using namespace System::IO; using namespace System::Net; using namespace System::Net::Sockets; using namespace System::Collections; array<Byte>^ buffer = gcnew array<Byte>(256); array<Byte>^ name = Encoding::ASCII->GetBytes ("USER "+benutzername+"\r\n"); array<Byte>^ pass = Encoding::ASCII->GetBytes ("PASS "+benutzerpass+"\r\n"); Socket^ s = gcnew Socket (AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp ); s->Connect (pop3, 110); if (s->Connected == FALSE) return FALSE; while ( s->Receive ( buffer ) == 0); String^ bufferstring = Encoding::UTF8->GetString( buffer ); if (bufferstring->StartsWith ("+OK") == FALSE) return FALSE; s->Send (name,SocketFlags::None); s->Receive ( buffer ); bufferstring = Encoding::UTF8->GetString( buffer ); if (bufferstring->StartsWith ("+OK") == FALSE) return FALSE; Sleep (50); s->Send (pass, SocketFlags::None); s->Receive ( buffer ); bufferstring = Encoding::UTF8->GetString( buffer ); if (bufferstring->StartsWith ("+OK") == FALSE) return FALSE; return TRUE; }
-
Moin,
s->Connect (pop3, 110); if (s->Connected == FALSE) return FALSE;
zur zweiten Zeile wird er nie kommen, da bei einem fehlgeschlagen Verbindungsversuch eine Exception inder ersten Zeile ausgelöst wird
hand, mogel