AGB  ·  Datenschutz  ·  Impressum  







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

INDY POP3

Ein Thema von itashadow · begonnen am 23. Apr 2009 · letzter Beitrag vom 28. Apr 2009
Antwort Antwort
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#1

INDY POP3

  Alt 23. Apr 2009, 15:37
Hi Leute.

Hab da ein Großes Problem mit Indy und IDPOP3 und IDMessage.

Ich lade mit POP3 E-MAils runter und kopiere den Anhang aus der E-Mail.
Das Klappt auch ganz gut.

Jedoch hab ich jetzt 3 E-Mails vor Augen gehabt, welche beim runterladen dazu führen, das ich eine leere Exception bekomme (Siehe Bild Exception.jpg)

Hilft mir natürlich nicht viel und ein Try Except bringt auch nicht.

Sobald die Zeile:
Code:
pop3.Retrieve(727, ms);
(ms: TIdMessage; pop3: TIdPOP3

ausgeführt wurde klappt meine Pop3 Komponente nicht mehr und ich muss das Programm neustarten.

Wenn ich nur den Header der E-Mail runterlade klappt das auch super nur im BODY muss irgendetwas sein, was nicht ganz mit INDY Harmonisiert mit Outlook konnte ich die E-Mail nämlich runterladen und auch aus Outlook rausholen. (Siehe Problem.txt) (Für die Outlooksicht einfach in .eml umbennen).


Weiß hier jemand rat? bin echt verzweifelt...


Danke.

Gruß

Nico
Miniaturansicht angehängter Grafiken
exception_584.jpg  
Angehängte Dateien
Dateityp: txt problem_193.txt (4,9 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: INDY POP3

  Alt 23. Apr 2009, 17:44
Kopiere die Unit IdPop3.pas in dein Projektverzeichnis.
Dann kanst du im Debugger per Einzelschritt in die Methode Retrieve() "reinsteppen" und schauen wo es klemmt.

PS: gibt kein deutsches Wort für "reinsteppen"?
Andreas
  Mit Zitat antworten Zitat
Gargoyl

Registriert seit: 11. Mär 2007
69 Beiträge
 
#3

Re: INDY POP3

  Alt 23. Apr 2009, 19:22
OFF TOPIC: @shmia das deutsche Wort für "reinsteppen" ist "rein treten" SCNR
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#4

Re: INDY POP3

  Alt 27. Apr 2009, 14:32
danke schonmal für den ansatz

das Problem ist in Zeile 449

ReceiveBody(AMsg); ich weiss leider nicht in welche pas datei der da springen will O_o
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

Re: INDY POP3

  Alt 27. Apr 2009, 14:53
Hallo,

gugst Du bitte hier: Indy tidmessage text auslesen und beachte dort die Teile, bei denen es um das korrigieren von fehlerhaften Mails geht.

Wenn Deine angehangene Problem.txt im Ursprung genau so ist, wie angehangen, dann hast Du vermutlich das gleiche Problem. Die Indykomponenten erwarten eine standardkonforme Mail, was im realen Leben leider nicht immer gewährleistet ist.
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#6

Re: INDY POP3

  Alt 27. Apr 2009, 15:40
danke das scheint mir für ein anderes Problem sehr nützlich zu sein

aber ich hab jetzt die lösung für mein problem:

in der IDCoder3to4:

Delphi-Quellcode:
procedure TIdDecoder4to3.Decode(const AIn: string; const AStartPos: Integer = 1; const ABytes: Integer = -1);
var
  LIn : TIdBytes;
  LOut: TIdBytes;
begin
  try
    if (AIn <> '') and (strstrcount(AIn,#0) = 0) then begin
      SetLength(LIn, 0); // Delphi 7.1 first edition warning bug
      SetLength(LOut, 0); // Delphi 7.1 first edition warning bug
      LIn := ToBytes(AIn); // if in dotnet, convert to serialisable format

      LOut := InternalDecode(LIn, AStartPos, ABytes);
      // Write out data to stream
      TIdStreamHelper.Write(FStream,LOut,ABytes);
    end;
    except;
  end;
end;
hab festegestellt das er beim Base64 Decodieren einmal zu oft in die Prozedur geht und beim letzten mal
AIn den wert "#0'==='" hat.

wofür steht eigentlich das #0?

naja so läuft es erst einmal

jetzt muss ich nur noch verschlüsseln können
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: INDY POP3

  Alt 28. Apr 2009, 09:41
Hallo,

bevor Du hier Fehler in IDCoder3to4 oder ähnlichem suchst, probier bitte erst mal, ob zwei oder drei Leerzeilen am Ende der Mail hinzugefügt, das Problem nicht auch beheben. Möchte hier nicht ausschließen, dass Du über einen Folgefehler der "zu kurzen" Mail gestolpert bist. #0 könnte z. B. ein Leerstring sein, es ist das Endekennzeichen für z. B. PChars oder auch nullterminierte Zeichenfolgen. Ist die Mail zu kurz, dann könnte es sein, dass Indy über das Mailende hinausliest und dabei dann auf Zufallswerte oder eben auch #0 stößt.
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#8

Re: INDY POP3

  Alt 28. Apr 2009, 13:19
wie kann ich das den machen wenn die E-MAil noch aufm Server liegt ohne die INDYs zu ändern?
Ich mein das Passiert ja beim runterladen der E-Mail via POP3.

Er schreibt ja schon das decodierte in die idmessage komponente.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

Re: INDY POP3

  Alt 28. Apr 2009, 15:41
Hallo,

jo, da habe ich nicht weit genug (mit)gedacht, habe bei meinen Jobs halt immer die Mails als Textdateien, die ich dann verarbeite und keine Mails, die direkt vom Server kommen.

Für eine Fehlerkorrektur "on the fly" beim Abholen der Mails vom Server, hab' ich auf die Schnelle keine Lösung.
  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:32 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