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


Anmelden zum Antworten