Announcement

Collapse
No announcement yet.

Base64 Decodieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Base64 Decodieren

    Ich habe da ein Problem mit dem Decodieren von Base64 Nachrichten.
    Irgendwie kann ich diese Nachricht nicht dekodieren.
    Indy zeigt mir auch <b>Content-Transfer-Encoding</b> als Leerstring an.
    Hat jemand eine Idee ?
    Wenn ich eine BASE64 Nachricht über Outlook bzw. Outlook Express versende, dann werden die Nachrichten problemlos decodiert.

    z.B.
    <PRE>

    X-Envelope-From: <[email protected]>
    X-Envelope-To: <xxx>
    X-Delivery-Time: 1029850520
    Received: from xxx.de (xx.de [2xx.1xx.1xx.1xx])
    by maiserver.de (8.9.3/8.8.7) with ESMTP id PAA20818
    for <[email protected]>; Tue, 20 Aug 2002 15:35:14 +0200 (MET DST)
    Received: (from xxx@yyyyy)
    by xxxxxx.i12.de (8.11.3/8.11.3/SuSE Linux 8.11.1-0.5) id g7KBp2F17251;
    Tue, 20 Aug 2002 13:51:02 +0200
    Date: Tue, 20 Aug 2002 13:51:02 +0200
    Message-Id: <[email protected]>
    To: [email protected]
    Subject: Test
    From: [email protected]
    MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary = b909db529609cf58f0c746ad03d2b720e

    This is a MIME encoded message.

    --b909db529609cf58f0c746ad03d2b720e
    Content-Type: text/plain
    Content-Transfer-Encoding: base64

    SGFsbG8gQmVybmQgT3N0ZW5kb3JmZiEKCkhlcnpsaWNoIHdpbG xrb21tZW4gYmVpIFNoYXJld2Fy
    ZSFkZSAtIHVuZCB2aWVsZW4gRGFuayBmdWVyIElocmUgQW5tZW xkdW5nIQoKTWl0IGRlbiBmb2xn
    ZW5kZW4gRGF0ZW4gaGFiZW4gU2llIFp1Z2FuZyB6dXIgU2hhcm V3YXJlIWRlLUF1dG9yZW5vYmVy
    dHdhcmUgZWlucGZsZWdlbi4KCldpY2h0aWdlciBIaW53ZWlzOi BXaXIgZW1wZmVobGVuIElobmVu
    IGRlbiBEb3dubG9hZCBkZXIgUERGLUhpbGZlIHp1cgpBdXRvcm Vub2JlcmZsYWVjaGUuIERlbiBM
    X19fX19fX19fX19fX19fXwoKU2hhcmV3YXJlLmRlIFNXViBHbW JIClNwaWxidXJnc3RyYXNzZSAx
    CjM1NTc4IFdldHpsYXIKCg==

    --b909db529609cf58f0c746ad03d2b720e--

    (gekürzt)
    </PRE>

  • #2
    Downloade mal das DEC = Delphi Encryption Compendium, es enthält eine eigene Base 64 Codierung. Vielleicht funktioniert ja das Indy Base64 Format nicht korrekt.

    Gruß Hage

    Comment


    • #3
      Hallo,

      ich habe im Moment das selbe Problem. Leider kann man keine eigene Base64 Codierung anwenden, weil man den Anhang auch nicht als base64 auf die Festplatte speichern kann, was mit anderen Attachments keine Probleme bereitet.

      Hat hier einer bereits eine Lösung, wie ich die base64-Attachments auslesen kann, oder sogar gleich als Klartext abspeichern kann?

      Danke für jede Hilf

      Comment


      • #4
        Hallo,

        schau mal unter
        http://www.zeitungsjunge.de/delphi/
        nach DIMime

        Marku

        Comment


        • #5
          Hallo,
          danke für die schnelle Antwort.
          Das Problem liegt aber gar nicht in dem decodieren des Anhangs (hab schon einige base64 decoder gefunden) sondern schon eine Stufe vorher. Ich schaff es nicht eine E-Mail mit Base64 anhang einfach als Datei abzuspeichern. Irgendwas muss man in den Indy-Komponenten einstellen damit diese base64 anhänge auslesen können, nur was

          Comment


          • #6
            Die EMail Decodierung von Indy kannst du generell vergessen. Wir setzen Indy seit etwa 3 Jahren als EMail-Komponenten in einer kommerziellen, mit Delphi 5 erstellten, Anwendung ein. Mittlerweile habe ich fast jede Zeile im Bereich Mime(De)Coding, IdMessage, IdMessageClient... geändert. Von Haus aus funktionierte nur der Empfang und die Decodierung von US-ASCII Mails ohne Base64-Anhang einigermassen. Das Update Indy8 auf Indy 9 hat nur zusätzlich zu den alten Fehlern neue gebracht, ich habe fast alle Bugfixes in der Version erneut machen müssen. Hier einige Beispiele:

            - Bei mehreren Quoted-Printable-Blöcken im Header (Subject) wurde nur der erste interpretiert, der Rest der Zeile verworden.
            - Einige Base64-codierten Anhänge werden nicht korrekt dekodiert.
            - Bei Multipart-Message erfolgt die Erkennung von Textparts und Anhängen nicht korrekt, die MIME Content-Types und MIME-Header der Messageparts werden nicht korrekt intepretiert.
            - Die Unterstützung von Zeichensetzen und UTF-8 ist nur rudimentär und fehlerhaft.

            Diese Aufzählung liest sich noch weiter Fortsetzen. Zudem ist der von Indy gewählte Implementationsansatz nicht robust bei Mails die nicht 100% den RFC's entsprechen. Leider gibt es solche Mails in der Praxis sehr häufig, selbst (oder gerade) von so verbreiteten Mail-Clients wie MS Outlook oder Lotus Notes.

            Fazit:
            Das einzige Positive, daß ich über die Indy-Komponente sagen kann ist, das ich in den letzten drei Jahren eine Menge über die EMail-Standarts und die entsprechenden RFC gelernt habe. Ich habe es mittlerweile aufgegeben Updates auf neue Versionen zu durchzuführen sondern pflege "meinen" Code weiter. Leider steht demnächst ein Wechsel auf Delphi 2005 (Win32) an und ich weiss zur Zeit nicht, wie ich mit den EMail-Komponenten verfahre? Delphi 2005 beinhaltet Indy 10, glaube ich? Eventuell versuche ich meine geänderten Mail-Komponenten mit den WinSocket Komponenten von Delphi 2005 zu komibinieren. Hat hiermit jemand Erfahrungen

            Comment


            • #7
              Hallo Thorsten,

              hast Du dir schon mal die <a href="http://www.overbyte.be/frame_index.html?redirTo=/products/ics.html">ICS-Komponenten</a> angesehen? Wir verwenden sie bisher (zwar nur für E-Mail-Versand und als http-Server) ziemlich ohne Probleme

              Comment


              • #8
                Hallo Bernhard,

                Mit den ICS-Komponenten habe ich vor 6-7 Jahren eine TCP/IP Client-Server Anwendung entwickelt. Damals hatte ich die meisten Probleme mit der asynchronen (none blocking) Kommunikation und Threads, deshalb habe ich für das neue Projekt auf Indy gewechselt. Die Qualität der ICS-Komponenten waren aber ok, ich sollte mir mal anschauen was sich dort in den letzten Jahren getan hat. Gestern bin ich bei der Suche nach Routinen zur Zeichensatzkonvertierung auf die <a href="http://www.ararat.cz/synapse/index.htm">Synapse-Komponenten</a> gestoßen. Synapse beinhaltet auch Objekte für POP3, SMTP, IMAP und MIME, die werde ich jetzt auch mal ausprobieren

                Comment


                • #9
                  Für Zeichensatzkodierung kannst Du dir auch mal <a href="http://www.philo.de/xml/downloads.shtml">Utility Libraries</a> ansehen

                  Comment


                  • #10
                    Bei Delphi 2005 hast du die Indy 9 und 10 zur freien Auswahl.
                    Hast du schon mal daran gedacht, den Indies deinen Code und deine Bugfixses zur Verfügung zu stellen?

                    Viele Grüsse
                    Pete

                    Comment


                    • #11
                      Hallo Forum,

                      ich hoffe einer von Euch kann mir weiterhelfen bzw. das ich hier an der richtigen stelle bin. Mein Problem schaut wie folgt aus bzw. ich dachte ich könnte mein Problem folgendermaßen lösen.

                      Ich hole mir mit Hilfe von IMAP4, den Header und Body einer EMail von meinem Mailserver. Ich erlange somit die selben Informationen, wie ich sie auch erhalte wenn ich mir den Quellcode einer EMail in Thunderbird anzeigen lasse.

                      Nun habe ich das Problem, dass ich bei Mail´s die einen Anhang besitzen, diese in BASE64 codierten Attachment´s nicht entschlüsseln kann. Meine Idee (die aber leider nicht geht) sah so aus, dass ich im ersten Schritt, den durch die boundary´s geblockten BASE64 Code in eine Textdatei schreibe. In einem zweiten Schritt wollte ich dann den Inhalt dieser Textdatei Zeile für Zeile durch meinen BASE64 Encoder laufen lassen und in eine neue Datei schreiben. Im letzen Schritt war vorgesehen, einfach die Dateiendung mit "IO.Path.ChangeExtension("C:\....\Test.txt", ".pdf") zu verändern (natürlich so wie es zu dem Attachment gehört).
                      Ja nur leider geht das irgendwie nicht. Es ist ansatzweise zu erkennen, dass es sich um den Anhang handelt aber die Datei ist nicht richtig lesbar. Der zu Encodene Code scheint mir nicht ganz richtig zu sein.

                      Kennt jemand das Problem?
                      vielen dank
                      Marcel

                      Comment


                      • #12
                        Was hat das mit diesem 4 Jahre alten Beitrag zu tun?

                        Sicherlich geht bei einem "Zeile für Zeile " die Base 64 Codierung flöten, denn dort gibt es keine Zeilen..
                        Christian

                        Comment


                        • #13
                          ich habe das Problem jetzt lösen können :-).... bei meinem Base64 Code gab es schon Zeilen. Diese sind natürlich immer durch 4 teilbar. Ich habe den encodierten Code nur einfach in deine Datei geschrieben und das war falsch... für das schreiben von Umlauten und Sonderzeichen in eine Datei muss auch noch einmal ein coding vorgenommen werden. vom lauter hin und her coden habe ich das ganz übersehen.

                          Comment

                          Working...
                          X