AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TidPop3 und fehlender Body Content-Transfer-Encoding: Base64
Thema durchsuchen
Ansicht
Themen-Optionen

TidPop3 und fehlender Body Content-Transfer-Encoding: Base64

Ein Thema von Drop Table · begonnen am 21. Mär 2008 · letzter Beitrag vom 21. Mär 2008
Antwort Antwort
Drop Table

Registriert seit: 16. Aug 2006
Ort: Wedel
26 Beiträge
 
Turbo Delphi für Win32
 
#1

TidPop3 und fehlender Body Content-Transfer-Encoding: Base64

  Alt 21. Mär 2008, 10:14
Hallo,

bevor ich endgültig aufgebe meine Mails mit Indy9 oder 10 zu verarbeiten, wollte ich euch nochmal fragen, ob ihr in dem Code einen Fehler seht, oder ob noch etwas fehlt.

Die Routine verarbeitet Textmails, sowie Mails mit Attachments einwandfrei, nur bei folgender Mail komme ich nicht an den Body ran.
Zitat:
MIME-Version: 1.0
From: <noreply@example.com>
To: pq@example.com
Date: 20 Mar 2008 15:25:55 -0700
Subject: [GEO] Notify
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
Message-Id: <20080320222555.5DCD69F946@signal.example.com>

VGhpcyBpcyBhbiBhdXRvbWF0ZWQgbWVzc2FnZSBmcm9tIEdlb2 NhY2hpbmcNCg0KRm9yIEdD
WkNZQTogWndpc2NoZW4gZGVuIFRyZXBwZW4gKEFyY2hpdmVkKS AoVHJhZGl0aW9uYWwgQ2Fj
...snip...
Hier der Delphi-Code, das vollständige Project lade ich im Anhang mit hoch.
Delphi-Quellcode:
function TdmPOP3.GetMail(ndx:Integer) : boolean;
var j : integer;
    FileName : String;
begin
  Result := false;

  if POP3Mail.Connected then
    try
      IdMsg.Clear;
      IdMsg.NoDecode := False;
// IdMsg.NoDecode := True;
      POP3Mail.Retrieve(ndx, IdMsg);
      form1.AddToLog('<subject>'
               +IdMsg.From.Address+' '
               +IdMsg.Subject+' '
               +DateToStr(IdMsg.Date)+'</subject>');

      for j := 0 to Pred(IdMsg.MessageParts.Count) do
      begin
        if IdMsg.MessageParts.Items[j] is TIdText then
          begin
            Form1.AddToLog('<TIdText>'#13
                  + TIdText(IdMsg.MessageParts.Items[j]).Body.Text+#13
                  + '</TidText>');
            Form1.Memo1.Lines.AddStrings(TIdText(IdMsg.MessageParts.Items[j]).Body);
          end;
        // else
        if IdMsg.MessageParts.Items[j] is TIdAttachment then
          begin
            FileName := TIdAttachment(IdMsg.MessageParts.Items[j]).FileName;
            FileName := CheckFileName(FileName); // Delete Dublicates!
            Form1.AddToLog('Save Attachment to ' + FileName);
            TIdAttachment(IdMsg.MessageParts.Items[j]).SaveToFile(FileName);
          end; // if ... is TIdAttachment
      end; // for j ...

      // Wenn erwünscht Mail nach download vom Server löschen
      if Form1.cbDelOnRead.Checked then Pop3Mail.Delete(ndx);
    except
      Form1.AddToLog('Fehler bei Pop3Mail.Retrieve');
      beep();
      Result := false;
      exit;
    end;
end;
Von der o.g. Mail wird hier z.B. nur das Subject geloggt, bzw auf Form1.Memo1.Lines wird nur eine Leerzeile ausgegeben. Also ich bin jetzt nach 2 langen Tagen Recherche mit meinem Latein am Ende, und fange nun an die Mails per TClientSocket runterzuladen, und weiter zu verarbeiten. Es würde mich aber interessieren, ob ihr noch einen Fehler oder fehlendes Statement entdeckt.
Eine komplette Beispielmail zum Testen, schicke ich gerne bei Bedarf zu.

Ein frohes Osterfest
wünscht
Andreas
Angehängte Dateien
Dateityp: zip d-praxis_idpop3_147.zip (3,7 KB, 12x aufgerufen)
Gruß
Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TidPop3 und fehlender Body Content-Transfer-Encoding: Ba

  Alt 21. Mär 2008, 10:53
Hallo Andreas,

deine Schleife über die MessageParts wird sicher nie ausgeführt.

Indy-Help: TIdMessage -> NoDecode
... When NoDecode is True, the message will be retrieved and added to MessageParts as MIME-encoded attachments. ... When NoDecode is False, the message will be retreived and the message body is stored in Body in its MIME-encoded form. ...

Dir auch Frohe Ostern.
  Mit Zitat antworten Zitat
Drop Table

Registriert seit: 16. Aug 2006
Ort: Wedel
26 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: TidPop3 und fehlender Body Content-Transfer-Encoding: Ba

  Alt 21. Mär 2008, 11:31
Hallo marabu!

Zitat von marabu:
Hallo Andreas,
deine Schleife über die MessageParts wird sicher nie ausgeführt.
KREISCH! So war es dann auch, und in meiner Form1 war auch noch ein kleiner Fehler, der zuverlässig dafür sorgte, dass alle Testergebnise, die in Memo1 sichtbar werden sollten wieder überschrieben wurden. Die Mimik mit Messageparts und Body hatte ich zudem nicht wirklich verstanden

Herzlichsten Dank für Deine Hilfe!
Gruß
Andreas
  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 05:27 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