![]() |
IdPOP3 Error in Retrieve bei Android
Hallo!
Ich möchte in einer Android-APP mit Hilfe des IDPOP3-Clients Mails herunterladen. Lässt man die APP unter Win32 laufen ist alles gut. Im Android steigt er bei: IdPOP3.Retrieve(i, Mail); mit der Exception: ...Klasse EFCreateError mit der Meldung 'Datei "/Indy72C59D5A" kann nicht erstellt werden. Not a directory' aufgetreten. aus. Verfolgt man es weiter landet man in der Unit System.Classes bei TFileStream.Create Es fliegt die Exception, siehe unten fett markiert. Bei FileOpen ird ja unten der Unterschied gemacht. Ich nehme an, bei FileCreate sollte dies wohl auch sein. Jemand eine Idee? constructor TFileStream.Create(const AFileName: string; Mode: Word; Rights: Cardinal); var LShareMode: Word; begin if (Mode and fmCreate = fmCreate) then begin LShareMode := Mode and $FF; if LShareMode = $FF then LShareMode := fmShareExclusive; // For compat in case $FFFF passed as Mode inherited Create(FileCreate(AFileName, LShareMode, Rights)); if FHandle = INVALID_HANDLE_VALUE then raise EFCreateError.CreateResFmt(@SFCreateErrorEx, [ExpandFileName(AFileName), SysErrorMessage(GetLastError)]); end else begin {$IFDEF MSWINDOWS} inherited Create(FileOpen(AFileName, Mode or Rights)); {$ELSE !MSWINDOWS} inherited Create(FileOpen(AFileName, Mode)); {$ENDIF MSWINDOWS} if FHandle = INVALID_HANDLE_VALUE then raise EFOpenError.CreateResFmt(@SFOpenErrorEx, [ExpandFileName(AFileName), SysErrorMessage(GetLastError)]); end; FFileName := AFileName; end; |
AW: IdPOP3 Error in Retrieve bei Android
Ja, Du musst den Pfad für die Attachment-Tempfiles setzen:
Delphi-Quellcode:
Wenn Du zunächst nur eine Übersicht haben willst und Laufzeit sparen, verwende alternativ RetrieveHeader.
Mail := TIdMessage.Create;
Mail.AttachmentTempDirectory := TPath.GetTempPath; // z.b. storage/emulated/0/Android/data/com.embarcadero.AndroidPOP3/files/tmp PopMail.Retrieve(i, Mail); Das ist ein Fehler im MakeTempFilename von Indy. Dort fehlt der Mobile-ifdef für die Verarbeitung bei leerem Attachment-Pfadnamen. |
AW: IdPOP3 Error in Retrieve bei Android
Hi!
Danke, das hat erst einmal geklappt. Leider kommt jetzt das nächste Problem beim Speichern vom Attachment. Attachment.SaveToFile(destfilename); Attachment.Filename : BA_Gabelstapler.pdf destfilename : /storage/emulated/0/download/BA_Gabelstapler.pdf (TPath.GetSharedDownloadsPath + PathDelim) Exception: Error saving attachment Hierzu auch so ne gute Idee? :-) |
AW: IdPOP3 Error in Retrieve bei Android
Die generische Kopierroutine von Indy ist fehlerhaft. Also anstelle von SavetoFile folgendes einsetzen:
Delphi-Quellcode:
TFile.Copy(Attachment.StoredPathName, DestinationFile, True);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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