![]() |
Emails mit Lazarus und Synapse abrufen
Hallo liebe Gemeinde :)
Ich benötige mal etwas Hilfe bei dem Abrufen von Emails. Mittels Synapse und diesem Beispiel: ![]() kann ich Emails abrufen. Ziel ist es zu wissen wie viele Emails im Postfach liegen und die Betreffs auslesen. Was ich nicht verstehe, wie ermittle ich die Anzahl und das auch nur von ungelesenen. Hoffe ihr könnt mir etwas auf die Sprünge helfen. Grüße |
AW: Emails mit Lazarus und Synapse abrufen
steht doch in der Doku
![]() ![]() ![]() gelesen/ungelesen gibt es bei Pop meines Wissens nicht,das wird nur von den Clients/Webmailer nachträglich angeflanscht.(afaik) |
AW: Emails mit Lazarus und Synapse abrufen
Vielen Dank,
die Anzahl liest es nun korrekt aus. Da ich keine Funktion gefunden habe die den Betreff gezielt ausgibt muss das aus dem FullResult geholt werden. Oder gibt es doch einen Trick? Grüße und Dank! |
AW: Emails mit Lazarus und Synapse abrufen
top?
|
AW: Emails mit Lazarus und Synapse abrufen
Das habe ich probiert.
Aber damit wird nicht gezielt eine Zeile herausgesucht. Bei mir zeigt es trotzdem alle Zeilen an.
Delphi-Quellcode:
pop.AuthType:=POP3AuthAll;
pop.login; pop.stat; msgc:=pop.StatCount; pop.list(0); pop.Retr(1); pop.Top(1,2); memo1.lines.Assign(pop.FullResult); msgcount.Caption:=IntToStr(msgc); |
AW: Emails mit Lazarus und Synapse abrufen
Im Moment hab ich das so gelöst:
Delphi-Quellcode:
Im Index 19 befindet sich bei meinen Testmails das Subject.
pop.AuthType:=POP3AuthAll;
pop.login; pop.stat; msgc:=pop.StatCount; pop.list(0); pop.Retr(1); //pop.Top(1,0); //memo1.lines.Assign(pop.FullResult); //msgid:=findmsg(pop.FullResult,'Subject:'); msgtext.Caption:=pop.FullResult.Strings[19]; msgcount.Caption:=IntToStr(msgc); //pop.Dele(1); pop.logout; Kann man sich darauf verlassen oder ändern sich die Header, je nach Provider? Das auskommentierte 'findmsg' ist eine Funktion die in der Stinglist den String 'Subject:' finden soll und den Index zurückliefert. Funktioniert aber irgendwie nicht...
Delphi-Quellcode:
Dann hätte ich auf jeden Fall den richtigen Index.
function findmsg(const AStrings: TStrings; const AText: String;
CaseFlag: Boolean=False): Integer; var I, C: Integer; begin Result := AStrings.IndexOf(AText); if CaseFlag then begin C := Result; Result:=-1; for I:=C to AStrings.Count-1 do if AText=AStrings[I] then begin Result:=I; Break; end; end; end; Kann mir jemand einen Tipp geben? Grüße |
AW: Emails mit Lazarus und Synapse abrufen
Bist Du sicher, dass da nur "Subject:" in der Zeile steht? Oder ist es eher so, dass sie mit "Subject:" beginnt? Im letzteren Fall passen die Vergleiche nicht (IIRC prüft IndexOf auf Gleichheit, weiter unten tust Du es selbst auch).
|
AW: Emails mit Lazarus und Synapse abrufen
Danke DeddyH
daran hatte ich nicht gedacht. also müsste ein Platzhalter dafür sorgen das die Zeile gefunden wird?! Grüße und Danke! |
AW: Emails mit Lazarus und Synapse abrufen
Ich würde es ungefähr so versuchen (ungetestet):
Delphi-Quellcode:
Die AnsiStartsXXX-Funktionen sind in Delphi in der Unit StrUtils zu finden, ob es in Lazarus Entsprechungen gibt, weiß ich leider nicht.
function findmsg(const AStrings: TStrings; const AText: String;
CaseFlag: Boolean=False): Integer; var i: integer; begin Result := -1; for i := 0 to AStrings.Count - 1 do if (not CaseFlag and AnsiStartsText(AText, AStrings[i])) or AnsiStartsStr(AText, AStrings[i]) then begin Result := i; break; end; end; |
AW: Emails mit Lazarus und Synapse abrufen
Gibt es einen Grund, warum du nicht
![]() Da kannst du dir den ganzen Zirkus sparen. (Gesamten) Header holen Bei TMimeMess in Lines packen TMimeMess.DecodeMessage |
AW: Emails mit Lazarus und Synapse abrufen
Zitat:
Danke! |
AW: Emails mit Lazarus und Synapse abrufen
Zitat:
Allerdings blicke ich da nicht durch, so viele Methoden, mit so wenig Beschreibung. Hast du nen Tipp für mich? Danke und Grüße |
AW: Emails mit Lazarus und Synapse abrufen
Zitat:
Und Demos gibt es auch noch da. Was vermisst du? |
AW: Emails mit Lazarus und Synapse abrufen
Hallo
ich kann deinen Gedanken nicht folgen. Zitat:
Gesamten Header holen - ok TMimemess in lines packen - also in TStrings auch ok DecodesMessage - in was und was mache ich damit? Ich möchte nur die Subject Zeile auslesen (ohne "Subject:") Was passiert mittels DecodeMessage? Zitat:
Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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