AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IdPOP3 Error in Retrieve bei Android

Ein Thema von benjaminradde · begonnen am 6. Feb 2014 · letzter Beitrag vom 9. Feb 2014
Antwort Antwort
benjaminradde

Registriert seit: 6. Feb 2014
3 Beiträge
 
#1

IdPOP3 Error in Retrieve bei Android

  Alt 6. Feb 2014, 15:07
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;
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: IdPOP3 Error in Retrieve bei Android

  Alt 6. Feb 2014, 19:12
Ja, Du musst den Pfad für die Attachment-Tempfiles setzen:
Delphi-Quellcode:
Mail := TIdMessage.Create;
Mail.AttachmentTempDirectory := TPath.GetTempPath; // z.b. storage/emulated/0/Android/data/com.embarcadero.AndroidPOP3/files/tmp
PopMail.Retrieve(i, Mail);
Wenn Du zunächst nur eine Übersicht haben willst und Laufzeit sparen, verwende alternativ RetrieveHeader.

Das ist ein Fehler im MakeTempFilename von Indy. Dort fehlt der Mobile-ifdef für die Verarbeitung bei leerem Attachment-Pfadnamen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
benjaminradde

Registriert seit: 6. Feb 2014
3 Beiträge
 
#3

AW: IdPOP3 Error in Retrieve bei Android

  Alt 6. Feb 2014, 20:16
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?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: IdPOP3 Error in Retrieve bei Android

  Alt 9. Feb 2014, 17:11
Die generische Kopierroutine von Indy ist fehlerhaft. Also anstelle von SavetoFile folgendes einsetzen:
TFile.Copy(Attachment.StoredPathName, DestinationFile, True);
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:13 Uhr.
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