Klasse mit Beispiel für HTML-eMailversand samt Anhängen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    So, jetzt habe ich die eMail mal in meinem Outlook angeschaut und dort scheinen die Umlaute richtig dargestellt zu werden ausser das 'ß' im Betreff.

    Dennoch: das muss auch in GMX richtig dargestellt werden können. Ich erstelle ja schliesslich Dinge nicht nur für Outlook o.ä.....

    Wenn mal jemand durchschauen könnte was mit der Mail los ist wäre ich sehr dankbar!
    Angehängte Dateien

    Kommentar


    • #17
      .msg ist nicht .eml, sondern eine Binärdatei, die nicht menschenlesbar ist.
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #18
        Ups, mein Fehler.

        Hier nochmals die richtige Version der eMail (siehe Anhang).
        Angehängte Dateien

        Kommentar


        • #19
          Betreff

          Enthält mehrere encoded words, die angeblich Latin1 seien, aber quoted-printable-codierte UTF-8-Sequenzen beinhalten. Die Sequenz für das ß (U+00DF) müsste C3 9F lauten, wovon aber nur noch C3 enthalten ist. Es ist also falsch codiert und auch noch verstümmelt.


          Nachricht

          Die Nachricht ist multipart/mixed und enthält einen multipart/alternative-Teil für den Textinhalt und einen application/octet-stream-Teil, der den Anhang darstellt. Der Textinhalt besteht aus 2 alternativen Teilen, zum einen text/plain und zum anderen text/html.

          Der text/plain-Teil enthält quoted-printable-codiertes Latin1 und lässt sich mit diesen Angaben auch korrekt decodieren. Dieser Teil ist leider das einzige Textstück der ganzen E-Mail, das sich korrekt decodieren lässt.

          Die text/html-Alternative gibt an, quoted-printable-codiertes UTF-8 zu enthalten, aber die einzelnen Codepoints sind doppelt UTF-8-codiert und damit fehlerhaft. Technisch gesehen lässt sich die Nachricht korrekt decodieren, nur das was herauskommt ist nicht das was es sein sollte.

          Beispiel:
          ß (U+00DF) => ß (C3 9F) => ß (C3 83 C5 B8)

          Der Anhang enthält base64-codiertes UTF-8, was korrekt ist, da er als nicht lesbare Binärdaten gekennzeichnet ist, die keinem Zeichensatz zuzuordnen sind, jedenfalls aus Sicht des E-Mail-Programms.


          Fazit

          Entweder hast du grobe Bedienfehler bei der Benutzung dieser Mailerklasse begangen oder sie bekommt es einfach nicht hin und sollte gegen eine andere Klasse ausgetauscht werden.

          Gruß,

          Amica


          [COLOR="Red"]Edit[/COLOR]

          Die Klasse ist zwar kein Meisterstück, hätte diese Mail aber niemals so zusammengebaut, wie sie angekommen ist. Vermutlich wurde die Nachricht durch Spamfilter oder andere Server decodiert und konnte aufgrund ihrer Fehlerhaftigkeit auch nur wieder anders fehlerhaft zusammengebaut werden. Im Grunde ist es aber trotzdem so, dass die verwendete Klasse bei genauerer Betrachtung nicht in der Lage ist, korrekte Kopfzeilen zu erzeugen und dadurch schon die Hauptschuld an dem Problem trägt.

          Ich hab mir grad mal SwiftMailer angesehen. Offensichtlich haben die Entwickler das nicht mal schnell in 20 Minuten zusammengehackt, sondern jahrelange Erfahrung einfließen lassen und sogar die RFCs gelesen. Der ist also aus meiner Sicht empfehlenswert, wenn auch vielleicht etwas umfangreicher.
          Zuletzt geändert von AmicaNoctis; 27.05.2011, 08:38.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #20
            @Amica

            Soll heissen diese Klasse hat es wahrscheinlich verbockt?

            Ich habe mir jetzt SwiftMailer angeschaut und bin erdrückt.
            Ich brauche doch nur eine Klasse, in einer Datei, die ich einbinden kann in meine Scripte und damit einfach nur normale UTF-8 eMails mit Anhang verschicken kann.
            Mehr brauch ich nicht. Kannst du mir nicht vielleicht eine andere Klasse nennen die das korrekt macht ohne viel drumherum? Ich wüsste mit dem SwiftMailer nichts anzufangen. Muss das ganze Verzeichnis hochgeladen werden? Oder nur der Klassenordner? Oder gar nur eine Datei davon?

            Ich hoffe es gibt eine einfache Klasse die jedoch korrekt funktioniert....

            Kommentar


            • #21
              Vielleicht haben noch andere eine Idee, welche schlankeren aber trotzdem RFC-konformen Mailerklassen es gibt. Ich kann an dieser Stelle nichts mehr für dich tun.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #22
                hier findest du eine Liste mit den besten Mailerklassen.
                Incl. jeweils einer Kurzbedienungsanleitung
                Mail() ist tot, es lebe mail()

                PS:
                Ich hatte bisher keine Probleme mit dem (alten)phpmailer und auch dem Swiftmailer. Wobei ich in letzter Zeit den Swiftmailer bevorzuge. Ich mag die public Attribute des phpmailers nicht mehr.
                Wir werden alle sterben

                Kommentar


                • #23
                  Gibt es irgendwo auch nur eine schlanke Klasse mit der man lediglich die Eigenschaften festlegen muss ("Sender, Empfänger, Betreff, Nachricht, Zeichensatz, plain/html, Anhänge") und die Send-Methode zum abschicken (eben sowas wie ich gerade benutze nur eben das es 'korrekt' arbeitet) ?

                  Ich blicke da nicht ganz durch warum man Megaklassen benutzten muss wenn es doch mit der Mail-funktion auch geht und das 'drumherum' eine Klasse zusammensetzten kann? Ich will doch nur Mails mit Umlauten und Anhängen verschicken können......

                  Kommentar


                  • #24
                    Ich blicke da nicht ganz durch warum man Megaklassen benutzten muss wenn es doch mit der Mail-funktion auch geht und das 'drumherum' eine Klasse zusammensetzten kann? Ich will doch nur Mails mit Umlauten und Anhängen verschicken können...
                    Du könntest versuchen die RFCs zu verstehen... ;-)
                    Das wird dich Monate lang beschäftigen.
                    Aber dann, dann würdest du auch mit mail() klar kommen.
                    Wir werden alle sterben

                    Kommentar


                    • #25
                      Alle Bibliotheken, die auf der von combie verlinkten Seite vorgestellt werden, leisten das. Es sind sogar fertige Codeschnipsel dabei, die beispielhaft zeigen, wie man mit dem entsprechenden Mailer arbeitet. Was gefällt dir daran nicht?

                      Klar kann man es auch mit mail() machen, aber dann solltest du dich entweder selbst gut mit den RFCs auskennen oder jemanden beauftragen, für dich das Rad nochmal neu zu erfinden und eine weitere Mailer-Klasse zu schreiben.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #26
                        Jetzt habe ich den Swiftmailer benutzt und alles so angepasst das dieser meine eMails vom Webserver verschickt.

                        Jedoch habe ich jetzt eine Fehlermeldung mit der ich nicht viel anfangen kann:

                        Code:
                        Expected response code 220 but got code ""
                        Ich habe aber den SwiftMailer angewiesen Sendmail als Methode zu benutzen (habe den Sendmail-Transporter erstellt und zwar mit dem Flag -bs).

                        Und wenn ich alle Daten eingegeben habe (im Script) versende ich die eMail am Ende auch. Genauso wie es in der Dokumentation steht.

                        Jedoch bekomme ich nun diesen Fehler. Laut Google kann es sein das die Informationen für SMTP-server fehlen. Aber ich benutzte ja kein Transport über SMTP sondern sendmail! Warum dann dieser Fehler?

                        Wenn ich den Transporter instanziere ohne den -bs Parameter sondern mit dem -t Parameter, dann bekomme ich keine Fehlermeldung. Aber auch die eMail wird nicht vershickt.

                        Kann mir da mal jemand Helfen der diesen SWIFT-Mailer benutzt?
                        Danke im voraus!

                        Kommentar


                        • #27
                          Ok, hat sich erledigt.
                          Ich habe doch den falschen Transporter erstellt. Ich habe Sendmail mit der PHP-Internen MAIL-Funktion verwechselt. Daher hat SwiftMailer Angaben für den SMTP-Server vermisst und daher der Fehler.

                          Danke Leute, ohne euch hätte ich das nie im Leben gelöst gehabt! Vielen vielen Dank!

                          Swift-Mailer scheint auf den ersten Blick extrem komplex zu sein, aber auf den zweiten Blick, also wenn man sich entscheiden welchen 'Transport' man wählt, ist es, auch dank der guten Dokumentation auf deren Seite, kinderleicht eMails zu erstellen und zu verschicken! Echt super Sache! Danke euch nochmals!

                          &

                          Kommentar

                          Lädt...
                          X