Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   pop3 timestamp (https://www.delphipraxis.net/179064-pop3-timestamp.html)

josefkoller 12. Feb 2014 14:08

pop3 timestamp
 
Hallo,

ich komme aus dem Fragen nicht mehr raus:

in pop3send von synapse ist ein Property timestamp definiert.

Da dachte ich, das nehme ich, um zu wissen, ab wann ich beim erneuten Abholen von Mails weiß, wann die letzten Mails geholt wurden.

Nun steht bei diesem Property auch, daß nicht alle Server timestamp unterstützen.

Natürlich macht mein Server auch kein timestamp.

Wie "markiert" ihr die letzte abgeholte Mail, um einen Wiederaufsatzpunkt zu haben?

Danke

Josef

himitsu 12. Feb 2014 14:46

AW: pop3 timestamp
 
Nahezu alle Mailprogramme merken sich die "ID" der Mails, welche sie schon haben.

Laden dann alle Header, vergleichen die IDs und laden dann die Bodys der fehlenden Mails.

Sir Rufo 12. Feb 2014 15:17

AW: pop3 timestamp
 
Zitat:

Zitat von himitsu (Beitrag 1247567)
Nahezu alle Mailprogramme merken sich die "ID" der Mails, welche sie schon haben.

Laden dann alle Header, vergleichen die IDs und laden dann die Bodys der fehlenden Mails.

Besser geht es mit dem POP3 Kommando UIDL n, dann bekommt man die eindeutige Mail-ID unter der diese Mail dem POP3-Server bekannt ist. Zudem erspart man sich das Laden der Header und eine Mail-ID ist im Header auch nicht zwangsläufig zu finden.

Die korrekte Abfolge wäre also
Code:
LIST
// Ergibt die Anzahl der Mails und die gesamte Größe im Postfach
// Jetzt ein Loop über alle Mails
UIDL n
// Ist diese Mail schon geladen?
LIST n
// Ist diese Mail zu groß zum laden?
TOP n
// Spricht irgendetwas dagegen, diese Mail zu laden (Header auswerten)?
RETR n

josefkoller 12. Feb 2014 16:14

AW: pop3 timestamp
 
Danke für die Antwort.

blicke trotzdem nicht recht durch!

in synapse steht

Delphi-Quellcode:
function Uidl(Value: Integer): Boolean;
Send UIDL command. If Value is 0, UIDL is for all messages. After successful operation is listing in FullResult. If all OK, result is True.
Es müßte doch dann bei einer Mail, die ich noch nicht "abgeholt" habe, ein false kommen??? Oder???
Bei mir kommt immer true.

Beispiel:

Meine Tests hab ich immer mit den ersten 12 Mails gemacht.

Delphi-Quellcode:
...
for i:=1 to 12 do begin
pop.retr(i);
pop.RetrStream(i, retrStream);
      retrStream.Position := 0;
...
Wenn ich jetzt beim nächsten Test schreibe, also vor die retr-Schleife:

Delphi-Quellcode:
    for j:=1 to 15 do begin
    uiresult:=pop.Uidl(j);
      if pop.Uidl(j)then
       uiresult1:=1 else uiresult1:=0;
      showmessage(inttostr(uiresult1));
     end;
Dann müßte doch bis zur 12. Mail eine "1" in showmessage stehen und dann in den nächsten 3 Mails eine "0".

Wie gesagt, ich glaub, ich blick da nicht recht durch:oops:

Vielleicht noch eine genauerer Hinweis, wie's geht???

Danke.

Josef

Sir Rufo 12. Feb 2014 17:34

AW: pop3 timestamp
 
Bei jeder Methode bekommst du als Result
Delphi-Quellcode:
true
, wenn die Methode erfolgreich ausgeführt wurde.

Bei einem
Delphi-Quellcode:
false
kannst du die Verarbeitung abbrechen.

Delphi-Quellcode:
if pop.Uidl( MailIdx ) then
begin
  pop.FullResult ... // da findest du jetzt die MailID
end;

josefkoller 12. Feb 2014 18:14

AW: pop3 timestamp
 
Hallo,

ich fürchte, irgendwann falle ich euch auf die Nerven.

ich schreib mal zwei Headers hier in den Post:

Ich hoffe, du meinst mit MailID nicht die Message-ID (da gibt es Mails, die haben keine).

Also welche ID meinst Du:

In der GMail Variante ist eine Message-ID, in der anderen Variante keine.
In der einen ist eine Zeichenfolge: "id EBFC110537A3".

Also, was soll ich als Identifikation hernehmen?

Ein Header aus GMail:
Delphi-Quellcode:
MIME-Version: 1.0
Received: by 10.14.xxx.133 with HTTP; Wed, 12 Feb 2014 09:52:55 -0800 (PST)
In-Reply-To: <CAEN1bAi8R1TC6_3WUjWFxeyFJuCMniS7zv8-Ad8y1_pj5Ra9RQ@mail.gmail.com>
References: <0-13541249275486067004-6679340351161396899-thtmlviewer=googlecode.com@googlecode.com>
   <1-13541249275486067004-6679340351161396899-thtmlviewer=googlecode.com@googlecode.com>
   <2-13541249275486067004-6679340351161396899-thtmlviewer=googlecode.com@googlecode.com>
   <CAEN1bAi8R1TC6_3WUjWFxeyFJuCMniS7zv8-Ad8y1_pj5Ra9RQ@mail.gmail.com>
Date: Wed, 12 Feb 2014 18:52:55 +0100
Delivered-To: infojosefkoller@gmail.com
Message-ID: <CAEN1bAj12V-HKCNxog1MmTLK5s_EgyHeUXj6-xG_Xc+5-3AyRw@mail.gmail.com>
Subject: Fwd: Issue 332 in thtmlviewer: htmlviewer kills other components
From: Josef Koller <infojosefkoller@gmail.com>
To: info@josefkoller.de
Content-Type: multipart/alternative; boundary=e0cb4e6ff4c917a84e04f2393e9b

--e0cb4e6ff4c917a84e04f2393e9b
Content-Type: text/plain; charset=UTF-8

Ein Header mit one.com:
Delphi-Quellcode:
Return-Path: <info@josefkoller.de>
Delivered-To: info@josefkoller.de
Received: from mx-r.one.com (mx-r.one.com [91.198.169.249])
   by mail123.local (Postfix) with ESMTP id C826910537A3
   
   
Received: from mx-q.one.com (mx-q.one.com [91.198.169.248])
   by mail123.local (Postfix) with ESMTP id EBFC110537A3   
   
   
   for <info@josefkoller.de>; Mon, 3 Feb 2014 02:57:08 +0100 (CET)
X-Virus-Scanned: by one.com
X-Amavis-Alert: BAD HEADER SECTION, Non-encoded 8-bit data (char C3 hex):
   Subject: Eingangsbest\303\244tigung Ihrer B[...]
X-Greylist: whitelisted by SQLgrey-1.8.0-rc2
Received: from mail-out1.b-one.net (mail-out1.one.com [91.198.169.18])
   by mx-r.one.com (Postfix) with ESMTP id 6112320C9C09A
   for <info@josefkoller.de>; Sun, 2 Feb 2014 14:10:35 +0000 (UTC)
Received: from localhost.localdomain (web199.local.one.com [10.246.64.199])
   by mail-out1.b-one.net (Postfix) with ESMTP id 50F0A80030397;
   Sun, 2 Feb 2014 15:10:35 +0100 (CET)
Received: from 93.222.184.106 by www.josefkoller.de via /mailenbestellungenbienen.php with HTTP; So, 02 Feb 2014 14:10:35 +0000
To: koexxxxx@web.de
Subject: Eingangsbestätigung Ihrer Bestellung
X-PHP-Originating-Script: 1275562:mailenbestellungenbienen.php
MIME-Version: 1.0
Content-type: text/html; charset=UTF-8
From: info@josefkoller.de
Cc: info@josefkoller.de
X-Antivirus: AVG for E-mail 2014.0.4259 [3697/7085]
X-AVG-ID: ID3026F6BF-5D8FAB25
Bin schön langsam am Verzweifeln. Diese blöden Mails.

In dem zweiten Header fehlt auch das Date:

Nur in folgender Zeile findet man ein brauchbares Datum:

Sun, 2 Feb 2014 15:10:35 +0100 (CET)

Nur auch hier: wie auslesen?

Danke nochmal.

Josef

Sir Rufo 12. Feb 2014 19:01

AW: pop3 timestamp
 
Ich meine immer noch die ID, die du über UIDL auslesen kannst :roll:

Also nix mit Header ... poste doch einfach mal
Delphi-Quellcode:
if pop.Uidl(0) then
  ShowMessage( pop.FullResult.Text ); // <- da das da hier wo
den Inhalt der MessageBox (oder die Info, dass keine MessageBox erscheint)

josefkoller 12. Feb 2014 20:55

AW: pop3 timestamp
 
Bist ein Hund,

wie lautet Dein Spruch:
Kaum macht man's richtig - schon funktioniert's.

Ich wär nie im Leben drauf gekommen, daß mit

pop.FullResult.Text

sowohl der Text als auch die ID abgerufen werden können.

Weiß gar nicht, wie ich dir danken soll.

Jetzt hab ich nur noch mein Date Problem mitten im Headertext, dann paßt alles.

Ciao

Josef

Sir Rufo 12. Feb 2014 21:00

AW: pop3 timestamp
 
Nun ja, wenn du dir den Kommentar zu der Funktion anschaust
Delphi-Quellcode:
function Uidl(Value: Integer): Boolean;
// Send UIDL command.
// If Value is 0, UIDL is for all messages.
// After successful operation is listing in FullResult.
// If all OK, result is True.
Oder was denkst du ist mit
Zitat:

After successful operation is listing in FullResult.
gemeint? :mrgreen:

Ein Blick auf das POP3 Protokoll hilft auch http://de.wikipedia.org/wiki/Post_Office_Protocol

josefkoller 13. Feb 2014 09:53

AW: pop3 timestamp
 
Hallo,

jetzt bin ich doch schon wieder da:

Bevor ich anfange, mich wieder zu verrennen, frag ich lieber gleich:

Es geht um das Abholen der neuesten Nachrichten:

Die letzte MailID (mit UIDL ermittelt) lautet z. b.
5 UID8717-1300474375

Bei mir wird die erste Zahl bei den Mails hochgezählt und die UID. Der hintere Teil nach dem Bindestrich ist immer gleich.

Nun könnt ich ja beim Abholen diese erste Zahl und die UID prüfen und ab da abholen.

Nur:
Was passiert, wenn von einem anderen Rechner diese Mail gelöscht wurde und weitere Mails dazukamen?

soweit ich das sehe, wird einfach nach dem Löschen diese 5 UID 8717 wieder mit einer neuen Mail gekennzeichnet. Ich nehm das mal so an, weil ich in meinen Mails keine Lücken in der Numerierung finde.

Man müßte also noch was anderes aus dem Header (Date oder Message-ID) in die Prüfung mit einbeziehen. Da aber Message-ID und Date unsichere Kandidaten sind, scheint mir das auch nicht der richtige Weg zu sein.

Deswegen meine Frage:

Wie vorgehen??

Danke.

Josef


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz