Norbert: Problem mit Multipart Mails

Hallo SELFHTML-Gemeinde,

Seit längerem versuche ich eine HTML-Mail(kleiner Newsletter) zu erstellen. Eine, der möglichst auch ein gutes BIld macht, wenn die HTML-Ansicht im Email-Programm deaktiviert ist. Nach längeren Recherchen bin ich auf die Multipart Mails mit ihren MIME-Elementen gestoßen.
Eine reine HTML-Mail ohne MIME konnte ich problemlos erstellen und in
outlook integrieren. Bei einer MIME-Mail gelang mir dies nicht, es
zeigte immer wieder Teile des Quelcodes in der Mail an. Da ich von MIME
und MUltipart-Mails noch gar keine Erfahrung hab, hab ich folgende Vorlage benutzt:

--------------------------------------------

From: absender@example.com
 To: empfaenger@example.com
 Subject: der Betreff der Nachricht
 MIME-Version: 1.0
 Content-type: multipart/mixed; boundary="--0101011"

----0101011
 Content-type: text/plain; charset=utf-8

Hier steht der Text dieser Beispielnachricht.

----0101011
 Content-type: image/gif; name="bild.gif"  (Art der Nachricht, z.Bsp. Klartext, Bilder, Videos etc.)
 Content-Transfer-Encoding: base64  (Hier wird das verwendete Codierungsverfahren angegeben)

<html>
<head>

<title>Unbenanntes Dokument</title>
</head>

<body>

Hier steht der HTML-Teil.

</body>
</html>

----0101011--

--------------------------------------------

Eingefügt in der mail, zeigte es immmer nur den Quelltext an
und keine HTML Elemente. Was mach ich falsch.

Vielen Dank.
Tschüß,
Norbert

  1. Hallo,

    wie erstellst Du diese Mail? (Quellcode bitte!)

    Gruß aus Berlin!
    eddi

    1. Hallo eddi,

      Was meinst du mit, wie ich die Mail erstelle?
      Der Quellcode steht in meinem ersten posting doch mit dabei.

      ebenfalls grüße aus berlin,
      tschüß,
      norbert

      1. Re:

        Was meinst du mit, wie ich die Mail erstelle?

        Damit meine ich, wie diese Mail zusammengestellt wirt. Dabei käme es mir schon auf die eingesetzte Programmiersprache an.

        Der Quellcode steht in meinem ersten posting doch mit dabei.

        Dort steht der Quelltext der Mail aber nicht der Quellcode des generierenden Programms.

        Gruß aus Berlin!
        eddi

        1. Damit meine ich, wie diese Mail zusammengestellt wirt. Dabei käme es mir schon auf die eingesetzte Programmiersprache an.

          NAch meinem Wissen habe ich als Programmiersprache HTML und etwas MIME verwendet. Aber das scheint ja jetzt wohl auch nicht merh zu stimmen.

          Dort steht der Quelltext der Mail aber nicht der Quellcode des generierenden Programms.

          Wie komme ich an den Quellcode heran? Bei mir waren quelltext und Quellecode bisher immer das Gleiche.

          1. Norbert,

            du schreibst etwas von einem Newsletter und wir sind uns hoffendlich dahingehend einig, daß es einer Software bedarf, um diesen zu versenden. Weiterhin entnehme ich deinen nicht mehr als spartanisch zu bezeichnenden denn eher asketischen Ausführungen, daß du ein Problem mit den Headern hast. Dazu wäre schon interessant, _wie_ du deinen Mail-Entwurf _welchem_ Programm verfütterst, sodaß dieser versandt wird.

            Gruß aus Berlin!
            eddi

          2. Hallo Norbert,

            NAch meinem Wissen habe ich als Programmiersprache HTML und etwas MIME
            verwendet. Aber das scheint ja jetzt wohl auch nicht merh zu stimmen.

            nein, bestimmt nicht. Denn weder HTML noch MIME sind Programmiersprachen.
            Und wie eddi schon sagte: Du hast uns zwar den Quelltext der generierten Mailnachricht gezeigt, aber nicht die Programmzeilen, mit der du ihn erzeugst. Beispielsweise könnten die Zeilenumbrüche nicht richtig codiert sein. Solche und manch andere Fehler erkennt man nicht am Mail-Quelltext, den du hier im Posting zitierst.

            Wie komme ich an den Quellcode heran?

            Zeig uns den Programmabschnitt, der diese Mailnachricht erzeugt!

            Bei mir waren quelltext und Quellecode bisher immer das Gleiche.

            Da sind wir uns einig.

            So long,
             Martin

            --
            Man gewöhnt sich an allem, sogar am Dativ.
            1. Zeig uns den Programmabschnitt, der diese Mailnachricht erzeugt!

              Ja, aber wo finde ich den Programmabschnitt/die Programmzeilen?

              Bisher habe ich die Oberfläche des Newsletter immer im Dreamweaver
              erstellt. Den Newsletterversandt hätte ich bsiher folgendermaßen
              durchgeführt: Den HTML Teil im Dreamweaver erzeugt, per Dateiauszug einfügen in Outlook eingefügt und dann versendet. Es ist kein
              Newsletter im großen Maßstab, auch ohne an- und abmelden. Die Zahl
              der Empfänger ist überschaubar, ich hätte es ihn also wie eine email
              (nur mit html inhalt) versendet. An ein extra Programm für
              den Newsletterversand hab ich da bisher noch nicht gedacht. Für was ist
              so ein Program zuständig?

              Wenn ich also wie oben beschrieben bisher verfahren bin, war es mir
              immer möglich eine reine html Mail zu versenden. Allerdings hab ich es
              noch nicht geschafft eine multipart mail zu erzeugen, was aber mein
              eigentliches ziel ist. Sobald ich MIME ins Spiel bringe werden Teile
              des Quelltextes in der Mail angezeigt. Vielleicht liegt es am header, wie
              ihr schon meintet. Wie komme ich also an die Programmzeilen heran,
              um sie euch zu zeigen?

              tschüß,
              Norbert

              1. Hi Norbert,

                Zeig uns den Programmabschnitt, der diese Mailnachricht erzeugt!

                Ja, aber wo finde ich den Programmabschnitt/die Programmzeilen?
                Bisher habe ich die Oberfläche des Newsletter immer im Dreamweaver erstellt. Den Newsletterversandt hätte ich bsiher folgendermaßen durchgeführt: Den HTML Teil im Dreamweaver erzeugt, per Dateiauszug einfügen in Outlook eingefügt und dann versendet.

                aaah, jetzt geht mir ein Kronleuchter auf! Ich bin bisher immer davon ausgegangen, dass du ein Script auf dem Server laufen hast, das diese Mails erzeugt und verschickt. Heieiei, wenn du solche ungewöhnlichen Methoden verwendest, solltest du das bitte gleich von Anfang an dazu sagen! Jetzt ist mir auch klar, warum du bei der Frage nach dem Quellcode nicht gewusst hast, was wir eigentlich wollen!

                Wenn ich also wie oben beschrieben bisher verfahren bin, war es mir immer möglich eine reine html Mail zu versenden.

                Ja, das kann ich mir vorstellen - obwohl das auch nicht die feine Art ist. Outlook fügt den HTML-Teil dann einfach in den Plaintext-Teil ein. Manche Mailclients erkennen das dann als HTML-Mail; einige werden es dann auch als normale Textmail darstellen, so wie du es jetzt mit der multipart-Mail siehst. Kurzum, es ist Glückssache; je nachdem, welchen Mailclient der Empfänger verwendet, kann das Ergebnis ganz unterschiedlich aussehen.

                Allerdings hab ich es noch nicht geschafft eine multipart mail zu erzeugen, was aber mein eigentliches ziel ist. Sobald ich MIME ins Spiel bringe werden Teile des Quelltextes in der Mail angezeigt.
                Vielleicht liegt es am header, wie ihr schon meintet. Wie komme ich also an die Programmzeilen heran, um sie euch zu zeigen?

                Du wirst nicht drumherum kommen, selbst ein Script zu schreiben, das diese Mails generiert, z.B. in PHP. Vor allem solltest du dich vorher intensiver mit der Anatomie einer email-Nachricht beschäftigen. Dann wird dir vielleicht auch klar, dass das bisher nur mit viel Glück funktioniert hat. Nebenbei ist Outlook sowieso alles andere als ein standardkonformer oder gar vorbildlicher Mailclient. Ich wundere mich manchmal, dass Outlook-Mails von anderen Clients überhaupt einigermaßen sinnvoll interpretiert werden.

                So long,
                 Martin

                Übrigens: HTML-Mails sind bei vielen Empfängern sehr unbeliebt.

                --
                Viele Fachleute vertreten die Ansicht, jedes Feature eines Programms, das sich nicht auf Wunsch abstellen lässt, sei ein Bug.
                Außer bei Microsoft. Da ist es umgekehrt.
                1. Hallo Martin,

                  Vielen Dank für deine ausführliche Antwort. Na da bin ich aber froh,
                  dass alle Ungereimtheiten nun beseitigt sind. Ja, ich gebe zu,
                  die Methode ist sehr unprofessionell, aber damit will ich eigentlich
                  auch nur einen kleinen Kreis von Freunden erreichen und keine
                  Kunden oder sonstige Firmenkontakte.

                  Du wirst nicht drumherum kommen, selbst ein Script zu schreiben, das diese Mails generiert, z.B. in PHP. Vor allem solltest du dich vorher intensiver mit der Anatomie einer email-Nachricht beschäftigen.

                  Aber trotzalledem ... ist es mit meiner Methode in Dreamweaver etwa
                  nicht möglich eine Multipart-mail zu erzeugen? Das würde mich wirklich noch interissieren, ob ich nun trotzdem in Dreamweaver mit MIME ein solche mail erstellen kann? Meine bisher verwendetetn Quelltext findest du ja in meinem ersten posting.

                  tschüß,
                  Norbert

                  1. Hallo,

                    Das würde mich wirklich noch interissieren, ob ich nun trotzdem in Dreamweaver mit MIME ein solche mail erstellen kann? Meine bisher verwendetetn Quelltext findest du ja in meinem ersten posting.

                    der scheint mir auch soweit korrekt zu sein, jedenfalls erkenne ich auf Anhieb nichts, was daran falsch ist. Das Problem dürfte eher Outlook sein. Das erkennt beim Einfügen dieser Zeilen offensichtlich nicht, dass es sich hier um den Quelltext einschließlich Header- und Trennzeilen handeln soll, sondern interpretiert das alles komplett als Nutzinhalt.
                    In Outlook Express gibt es zwar beim Verfassen von HTML-Mails die Quelltext-Ansicht (in Outlook vielleicht auch), aber da kann ich auch keine zusätzlichen Headerzeilen eingeben, sondern nur den Nachrichteninhalt. Vor allem den entscheidenden Content-Type Header (multipart/mixed) kann ich deshalb nicht richtig unterbringen. Du bräuchtest also einen Mailclient, der es dir erlaubt, das komplette Mail-Gerüst einschließlich Headerzeilen von Hand einzugeben. So einer ist mir aber (leider) auch nicht bekannt.

                    Ciao,
                     Martin

                    --
                    Ich liebe Politiker auf Wahlplakaten.
                    Sie sind tragbar, geräuschlos, und leicht wieder zu entfernen.
                      (Loriot, deutscher Satiriker)
                    1. In Outlook Express gibt es zwar beim Verfassen von HTML-Mails die Quelltext-Ansicht (in Outlook vielleicht auch), aber da kann ich auch keine zusätzlichen Headerzeilen eingeben, sondern nur den Nachrichteninhalt. Vor allem den entscheidenden Content-Type Header (multipart/mixed) kann ich deshalb nicht richtig unterbringen. Du bräuchtest also einen Mailclient, der es dir erlaubt, das komplette Mail-Gerüst einschließlich Headerzeilen von Hand einzugeben. So einer ist mir aber (leider) auch nicht bekannt.

                      Ich hab auch Express. Ich kenne die Quelltext-Anzeigen Funktion. Aber
                      was genau meinst du mit Header. Ich meine, in der Quelltext-Ansicht in
                      Outlook kann ich auf <head> und </head> zugreifen und in diesem Bereich
                      natürlich dann den Quelltext ändern, oder hat Header nicht mit den
                      html-tag <head> zu tun? Was meinst du mit: "Vor allem den entscheidenden Content-Type Header (multipart/mixed) kann ich deshalb nicht richtig unterbringen. Du bräuchtest also einen Mailclient, der es dir erlaubt, das komplette Mail-Gerüst einschließlich Headerzeilen von Hand einzugeben." So wie ich das jetzt verstehe, kann ich doch aber das
                      gesamte Mailgerüst(HTML-Gerüst) in Outlook in der Quelltext-Ansicht von
                      Hand eingeben.

                      1. Hi,

                        Ich kenne die Quelltext-Anzeigen Funktion. Aber was genau meinst du mit Header. Ich meine, in der Quelltext-Ansicht in Outlook kann ich auf <head> und </head> zugreifen und in diesem Bereich natürlich dann den Quelltext ändern, oder hat Header nicht mit den html-tag <head> zu tun?

                        nicht das Geringste. Es geht hier um die Mail-Headerzeilen. Das head-Element des HTML-Inhalts ist ja schon Teil des Mail*inhalts*.

                        Was meinst du mit: "Vor allem den entscheidenden Content-Type Header (multipart/mixed) kann ich deshalb nicht richtig unterbringen. Du bräuchtest also einen Mailclient, der es dir erlaubt, das komplette Mail-Gerüst einschließlich Headerzeilen von Hand einzugeben."

                        Genau das, was ich sagte. Das, was du in Outlook (Express) editieren darfst, auch in der Quelltextansicht, ist eben nur der Nutzinhalt. Du hast doch in deinem ersten Posting die wichtigsten Mail-Header drin (From:, To:, Subject:, ...), nur werden die bei deiner Art, die Mail zu erstellen, als Mail*inhalt* eingefügt und sind somit nutzlos.

                        So wie ich das jetzt verstehe, kann ich doch aber das gesamte Mailgerüst(HTML-Gerüst) in Outlook in der Quelltext-Ansicht von Hand eingeben.

                        Nein. Verglichen mit dem klassischen Postversand hast du mit deiner Methode alle Freiheiten beim Beschriften und Gestalten des Briefpapiers (=Inhalt), du kannst aber keine Vermerke außer der Empfängeradresse auf den Umschlag (=Header) schreiben, das macht die Postler am Schalter (=Mailclient) oder die Post bei der Zustellung (=Mailserver) für dich.
                        Deswegen habe ich vorgeschlagen, dass du dich mal ein bisschen schlau machst, wie eine Mailnachricht aufgebaut ist. Für den Anfang ist es vielleicht schon interessant, wenn du den Quelltext einer beliebigen Mail anschaust, die du bekommen hast. Das Zeug fängt mit den Headerzeilen an, und erst nach der ersten Leerzeile folgt der eigentliche Inhalt. Auf das, was oberhalb dieser Leerzeile steht (Header), hast du bei den gängigen Mailclients keinen oder nur sehr eingeschränkten Einfluss.

                        Ciao,
                         Martin

                        --
                        Es gibt Tage, da gelingt einem einfach alles.
                        Aber das ist kein Grund zur Sorge; das geht vorbei.
                        1. Hi,

                          Mensch Martin. Vielen Dank für die Erklärungen. Das hat mir echt
                          weitergeholfen. Nun weis ich etwas besser bescheid. Dann werd ich
                          mich mal noch etwas schlau machen.

                          Danke für deine Mühen :)

                          Beste grüße von und nach Berlin,
                          tschüß,
                          Norbert

  2. Hallo,


    From: absender@example.com
    To: empfaenger@example.com
    Subject: der Betreff der Nachricht
    MIME-Version: 1.0
    Content-type: multipart/mixed; boundary="--0101011"

    ----0101011
    Content-type: text/plain; charset=utf-8

    Hier steht der Text dieser Beispielnachricht.

    ----0101011
    Content-type: image/gif; name="bild.gif"  (Art der Nachricht, z.Bsp. Klartext, Bilder, Videos etc.)
    Content-Transfer-Encoding: base64  (Hier wird das verwendete Codierungsverfahren angegeben)

    <html>
    <head>

    <title>Unbenanntes Dokument</title>
    </head>

    <body>

    Hier steht der HTML-Teil.

    </body>
    </html>

    ----0101011--


    Eingefügt in der mail, zeigte es immmer nur den Quelltext an
    und keine HTML Elemente. Was mach ich falsch.

    Deine Mail hat bisher _zwei_ Parts:

    ----0101011
    Content-type: text/plain; charset=utf-8

    und

    ----0101011
    Content-type: image/gif; name="bild.gif"  (Art der Nachricht, z.Bsp. Klartext, Bilder, Videos etc.)
    Content-Transfer-Encoding: base64  (Hier wird das verwendete Codierungsverfahren angegeben)

    wobei nach dem zweiten Part eigentlich der base64-codierte Bildinhalt stehen müsste. Statt dessen steht dort bei Dir HTML.

    Der HTML-Part sollte aber z.B. so:

    ----0101011
    Content-Type: text/html; charset='us-ascii'
    Content-Transfer-Encoding: 7bit

    <html>
    <head>
    <title>Unbenanntes Dokument</title>
    </head>
    <body>
    Hier steht der HTML-Teil.
    </body>
    </html>

    aussehen.
    Für Plain-Text, HTML und Bild brauchst Du also _drei_ Parts.

    viele Grüße

    Axel

    1. Für Plain-Text, HTML und Bild brauchst Du also _drei_ Parts.

      Hallo Axel,

      Danke für dein Posting. Muss ich bei Multipart Mails immer mit drei
      Teilen arbeiten? Wenn ich es richtig verstanden hab, kommen jetzt alle
      Bilder in folgenden Teil:

      ----0101011
      Content-type: image/gif; name="bild.gif"
      Content-Transfer-Encoding: base64

      Ich hab auch Mails gefunden, wo als MIME-Kennzeichnung folgendes stand:

      ------=_Part_156354_26656415.1143580990823
      Content-Type: text/html; charset="ISO-8859-1"
      Content-Transfer-Encoding: quoted-printable

      Dort ging man wie gewohnt mit dem HTML-Teil um. Man verwendete also
      auch Bilder in diesem HTML-Teil.
      Was hat das ganze mit der Codierung auf sich?

      Trotz deiner Hilfe, zeigt Outlook als Mailinhalt immer noch den
      gesamten Quelltext an, wenn ich mit MIME arbeite. Martin meinte, dass
      Outlook die ersten Zeilen eben nicht als MIME erkennt sondern es als
      Inhalt interpretiert. Ich bräuchte einen Mailclient, der auf den
      Header der Mail Einfluss nehmen kann. Wie kann ich etwas in den
      Header einer Mails schreiben? Brauche ich dazu ein extra Programm zum
      erstellen von Newsletter, oder muss ich mit PHP(hab ich immer wieder gehört) arbeiten?

      Beste Grüße,
      Norbert

      1. Hallo,

        Danke für dein Posting. Muss ich bei Multipart Mails immer mit drei
        Teilen arbeiten?

        Nein, nur, wenn Du den Plain-Text, den HTML- und den Bild-Part brauchst.

        Wenn ich es richtig verstanden hab, kommen jetzt alle
        Bilder in folgenden Teil:

        ----0101011
        Content-type: image/gif; name="bild.gif"
        Content-Transfer-Encoding: base64

        Nicht alle Bilder, sondern _ein_ Bild, eben bild.gif.

        Ich hab auch Mails gefunden, wo als MIME-Kennzeichnung folgendes stand:

        ------=_Part_156354_26656415.1143580990823
        Content-Type: text/html; charset="ISO-8859-1"
        Content-Transfer-Encoding: quoted-printable

        Dort ging man wie gewohnt mit dem HTML-Teil um. Man verwendete also
        auch Bilder in diesem HTML-Teil.

        Mit src="http://...". Die Bilder werden dann aus dem Internet nachgeladen.

        Was hat das ganze mit der Codierung auf sich?

        Steht das Bild in einem separaten Part als base64 encoded, dann ist das Bild Teil der Mail und muss nicht nachgeladen werden.

        Trotz deiner Hilfe, zeigt Outlook als Mailinhalt immer noch den
        gesamten Quelltext an, wenn ich mit MIME arbeite.

        Beispiel:

        From: absender@example.com
        To: empfaenger@example.com
        Subject: der Betreff der Nachricht
        MIME-Version: 1.0
        Content-Type: multipart/alternative; boundary="--0101011";

        ----0101011
        Content-Type: text/plain

        Hier der Text für Clients, die kein HTML unterstuetzen.

        ----0101011
        Content-Type: text/html

        <html>
        <head>
        <title>Unbenanntes Dokument</title>
        </head>
        <body>
        <h1>Hier steht der HTML-Teil.</h1>
        <img src="cid:pic_1" width=100 height=100>
        </body>
        </html>

        ----0101011
        Content-Type: image/jpeg
        Content-ID: <pic_1>
        Content-Transfer-Encoding: base64

        /9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK
        CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU
        FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAKAA0DASIA
        AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
        AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
        ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
        p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
        AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
        BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
        U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
        uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyXwf4
        QvfGHxV0SD7frPhoXUEAtJbSGOV5XJ8pAoMqKC0sAQMW2jBLH5cV23jvxRe6vqkVl/wlOreKNP0t
        GtLPUtWnMk06b2ZpCWCth2ZmUPllUohZtgNbXwtjQeC/E1wFAngjZIpcfNGslpdrIFPUBgqhgOoU
        Z6V523QH/PQV+tZPgqWHlOnHVU3ZXs7fhfay36dL2PxjiTM8Rjowr1LKVX3pWurvz1tbmbltpdLp
        c//Z

        viele Grüße

        Axel