Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#23
  Alt 19. Mai 2003, 06:40
Zitat von alexander:
Aber wieso sollte ich was dagegen haben, wenn du auch sowas anbietest?
Weil die Ähnlichkeit zwischen unseren Programmen in diesem Fall recht hoch ist. Anders gesagt: ich habe meine NonVCL-Version ja erst geschrieben, nachdem ich deine "fette" VCL-Version gesehen habe. Es ist also inspired by ..., und darum behalte ich den Quellcode lieber für mich, bis mir der Entwickler (du also!) gestattet, ihn zu veröffentlichen. So einfach ist das.

Zitat:
Mich würde aber andererseits mal interessieren, wie du dass mit dem Pop3 mit ohne VCL machst. Hast du eine Unit oder so was für mich?
Ich hatte in meinem Fundus aus Zeitschriften-CDs ein VCL-Beispiel für POP3 und SMTP ohne Komponenten gefunden. Die POP3-Unit habe ich mir mal genauer angeschaut. Natürlich ist es auch vorteilhaft, wenn man weiß, was bei POP3 passiert. Also: was muss man tun, um letztlich an die Mails heranzukommen, usw.

Ich hatte schon mal in AUQ (bei einer Diskussion zu Goto & Labels) einen Teil der Prozedur gepostet. Die Anzahl der Mails zu bestimmen, ist nicht schwerer:
Delphi-Quellcode:
      { ... }
      // mehr POP3-Sachen, die ich jetzt verrate ->

      // mail counter
      while(true) do begin
        res := sendPop3Cmd(s,'LIST ' + inttostr(Result+1));
        if(res = SOCKET_ERROR) then goto SocketCloseJump;

        ZeroMemory(@rbuf,sizeof(rbuf));
        res := recv(s,rbuf[0],sizeof(rbuf),0);
        if(res = SOCKET_ERROR) then goto SocketCloseJump;

{$IFDEF ENABLELOGS}
        if(rbuf[0] <> #0) and (rbuf[0] <> '+') then begin
          WriteStatusToLogFile('LIST ' + inttostr(Result+1) + #13#10);
          WriteStatusToLogFile(rbuf);
        end;
{$ENDIF}

        if(res = SOCKET_ERROR) then goto SocketCloseJump;
        if(rbuf[0] <> '+') then break;

        // increase Result
        inc(Result);
      end;

      { ... }
Der Weg über LIST 1, LIST 2, usw. mag umständlich erscheinen, funktioniert dafür aber auf jedem Server. Liefert der POP3-Befehl "+OK ..." zurück, existiert die Mail und man erhöht das Ergebnis der Funktion. Wenn nicht, gibt es keine (weiteren) Mails, und man beendet die Funktion.

Der Rest des Programms (unsichtbares Fenster, TNA-Icon, Popup-Menü und Settings-Dialog) ist normales NonVCL.


Gruß.
  Mit Zitat antworten Zitat