Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi mails abhohlen: größe und datum vorher checken (https://www.delphipraxis.net/28332-mails-abhohlen-groesse-und-datum-vorher-checken.html)

Nightfly 23. Aug 2004 11:32


mails abhohlen: größe und datum vorher checken
 
Delphi-Quellcode:
tPopMail.Connect(5000);
iMax := tPopMail.CheckMessages;
      for i := 1 to iMax do begin
        aMsg := tIdMessage.Create(NIL);
        aMsg.NoDecode := false;
        tPopMail.Retrieve(i, aMsg);
        aMsg.ProcessHeaders;
           for iMp := 0 to aMsg.MessageParts.Count-1 do begin
              if aMsg.MessageParts.Items[iMp] is tIdAttachment then begin
                 s := (aMsg.MessageParts.Items[iMp] as tIdAttachment).Filename;
                 (aMsg.MessageParts.Items[iMp] as tIdAttachment).savetofile('C:\'+s);
             end;



         end;
        aMsg.Free;
Mit diesem Code hohle ich eine mail ab. zu testzwecken bin ich sicher das es die einzige mail im postfach ist. Das mailfach dient als Ablage, mit dem sich Kunden auf knopfdruck eine Datei ziehen können. Folgendes will ich jetzt machen:
- Es soll sichergestellt werden das bloß die mail mit dem neuesten Datum abgeholt wird.
- Der anhang ist ~1 MB groß...und dieser Zeit muß man Kunden beschäftigen, sonst werden die nervös: ein fortschrittsbalken muß her. Wie bekomm ich die benötigten Daten? (also größe des anhangs und wieviel ich runtergeladen hab)

wäre dankbar für paar denkanstöße..

scp 23. Aug 2004 11:43

Re: mails abhohlen: größe und datum vorher checken
 
Zum Fortschrittsbalken: Da kannst du mit den Ereignissen OnWork, OnWorkBegin und OnWorkEnd arbeiten.

Nightfly 23. Aug 2004 12:03

Re: mails abhohlen: größe und datum vorher checken
 
Hmm, danke. So richtig komm ich bloß damit nich klar, die hilfe is auch nich sehr ergiebig.
Delphi-Quellcode:
procedure TForm1.tPopMailWork(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
Label1.Caption := IntToStr(AWorkCount);
end;
wäre mein erster ansatz...bloß kann ja so nich gehen, denn wann wird aktualisiert? wenn ich jede sekunnde den wert AWorkCount irgendwo aktualisiert ausgeben könnte würde mir das schon reichen.

Nightfly 23. Aug 2004 12:33

Re: mails abhohlen: größe und datum vorher checken
 
ok, es fehlte ein ProcessMessages. Also die Zahl der geladenen bytes hab ich...bloßwie komm ich an die gesammtgröße?

Luckie 23. Aug 2004 12:37

Re: mails abhohlen: größe und datum vorher checken
 
Zitat:

ok, es fehlte ein ProcessMessages
Nein, ein einfaches Label1.Refresh hätte es auch getan - denke ich.

Zitat:

Zitat von Nightfly
bloßwie komm ich an die gesammtgröße?

Es gibt noch ein anderes Work-Ereignis. ;) Genau genommen gibt es sogar insgesamt drei davon.

Nightfly 23. Aug 2004 12:56

Re: mails abhohlen: größe und datum vorher checken
 
ja, schon klar...aber was nützt mir es wenn am ende des transfers ein ereignis ausgelößt wird :?: ich will ja möglichst zu beginn schon wissen was am ende rauskommt ;)

Nightfly 27. Aug 2004 14:51

Re: mails abhohlen: größe und datum vorher checken
 
kann mir nochmal jemand elfen, wär echt nett...ich zähle zwar während des downloads die bytes mit..jedoch wüßt ich gern wiviels denn nun werden, um einen fortschrittsbalken machen zu können.

SleepyMaster 27. Aug 2004 17:43

Re: mails abhohlen: größe und datum vorher checken
 
:roll: OnWorkBegin :roll:

SleepyMaster 27. Aug 2004 17:46

Re: mails abhohlen: größe und datum vorher checken
 
Delphi-Quellcode:
procedure TForm1.IdPOP31WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
if AWorkMode = wmRead then
  Label1.Caption:='downloading Data'
else
  Label1.Caption:='uploading Data';
ProgressBar1.Max:=AWorkCountMax;
end;

procedure TForm1.IdPOP31Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
ProgressBar1.Position:=AWorkCount;
end;

procedure TForm1.IdPOP31WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
if AWorkMode = wmRead then
  Label1.Caption:='downloading complete'
else
  Label1.Caption:='uploading complete';
end;

Nightfly 30. Aug 2004 14:26

Re: mails abhohlen: größe und datum vorher checken
 
leider negativ: AWorkCountMax ist 0 :( (das hochzählen mit AWorkCount funktioniert aber)

SleepyMaster 30. Aug 2004 14:29

Re: mails abhohlen: größe und datum vorher checken
 
Zitat:

Zitat von Nightfly
AWorkCountMax ist 0 :(

Das wird dann wohl am POP3-Server liegen. Normalerweiße müsste der die Dateigröße bei beginn eines Transfers übermitteln.

Nightfly 30. Aug 2004 15:46

Re: mails abhohlen: größe und datum vorher checken
 
also is da nix zu machen? :( ..es handelt sich um pop.web.de ...is das prob da bekannt?

stupid42 12. Sep 2004 21:16

Re: mails abhohlen: größe und datum vorher checken
 
Zitat:

Zitat von Nightfly
also is da nix zu machen? :( ..es handelt sich um pop.web.de ...is das prob da bekannt?

Beim Testen vieler Funktionen, die mit E-Mails zu tun haben, haben die Server von GMX bisher am wenigsten herumgezickt :)

Probier es also erst mal mit einem GMX-Postfach aus.

Kann sein, daß Du auf dem richtigen Weg bist/warst, Dein Programm aber hinterher "GMX-optimiert" ist :pale:

HTH

scp 12. Sep 2004 22:48

Re: mails abhohlen: größe und datum vorher checken
 
Zitat:

Zitat von stupid42
... haben die Server von GMX bisher am wenigsten herumgezickt :)

Echt? Gilt das nur für POP3? Ich hatte GMX mal mit IMAP (geht erst ab GMX Pro) getestet, da gab es Probleme mit den GUIDs, da kamen nur fortlaufendene Zahlen raus, die sich bei jedem Login geändert haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 Uhr.

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