![]() |
IMAP emails auf attachment prüfen
Hallo,
ich möchte mit meinem email client und den indys alle eingegangenen nachrichten auf einem imap server auf einen anhang prüfen. leider funktionieren dinge wie MessageParts.AttachmentCount oder length(TheMsg.Headers.Values['X-Attachments']) > 0 irgendwie nicht. oder stellt der imap server evtl selbst eine möglichkeit (flag) bereit? hat vielleicht jemand eine idee wie ich das problem lösen kann?
Delphi-Quellcode:
Inbox.RowCount := nCount + 1;
for i := 0 to nCount-1 do begin TheImap.GetUID(i+1, TheUID); TheImap.UIDRetrieveFlags(TheUID, TheFlags); TheImap.UIDRetrieveHeader(TheUID, TheMsg); Inbox.Cells[0, i+1] := IntToStr(i+1); Inbox.Cells[1, i+1] := TheUID; if length(TheMsg.Headers.Values['X-Attachments']) > 0 then Inbox.Cells[2, i+1] := 'yes' else Inbox.Cells[2, i+1] := 'no'; Inbox.Cells[3, i+1] := ' ' + LowerCase(TheMsg.Subject); end; |
Re: IMAP emails auf attachment prüfen
hast du schon versucht die Komplette mail herunterzu laden ob es dann geht bzw. mal die Mail im klartext angeschaut ob man wirklich anhand des Headers feststellen kann ob ein Anhang dabei ist?
|
Re: IMAP emails auf attachment prüfen
hallo,
ich möchte ja nicht jede mail direkt runterladen, ich möchte ja nur wissen welche der mails einen anhang hat. der mail header selbst gibt keinen direkten aufschluss ob ein anhang vorhanden ist, mal abgesehen von dem boundery kram. aber der wird ja auch bei html mails mit eingefügten bildern die nicht direkt als anhang vorhanden sind genutzt. |
Re: IMAP emails auf attachment prüfen
genau, Outlook-Express zeigt zum Beispiel bei Mails die Bilder (html) drin haben auch das die Mail einen Anhang hat obwohl es eben nur Bilder innerhalb der Mail sind. Es gibt also vermutlich keine genaue diferenzierung was ein Anhang ist und was als Binärteil einer mail zu werten ist.
|
Re: IMAP emails auf attachment prüfen
hallo,
nagut dann bleibt mir wohl ersteinmal nichts anderes übrig als die email-header auf den string 'multipart/mixed' zu prüfen.
Delphi-Quellcode:
wirklich toll ist die lösung irgendwie nicht :(
if SmartPos('multipart/mixed', TheMsg.ContentType, False, 1, True) > 0 then
Inbox.Cells[2, i+1] := 'yes' else Inbox.Cells[2, i+1] := 'no'; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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