Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Fehler beim Einfügen von Inline Attachments

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Fehler beim Einfügen von Inline Attachments

    hallo,

    ich weiss dieses thema oder ähnliche probleme gab es schon haufenweise aber ich komme mit google und suche nicht mehr weiter.

    ich hab folgenden quellcode der mir eine multipart email zusammenbauen soll die aus folgenden teilen besteht:

    - einem html teil der aus einer .html datei gelesen wird
    - einer kleinen grafik die per inline attachment eingefügt werden soll.

    los gehts:

    PHP-Code:
    $dateiname "grafik.jpg";
    $datei "pfad zur grafik";

    $grenze "----";
    $header "MIME-Version: 1.0\r\n";
    $header .= "From:Adresse <Adresse>\n";
    $header .="Content-Type: multipart/related;\n\tboundary=$grenze\n";
    $header .="Content-Disposition:inline\n"
    multipart/related für mehrteilige verbundene inhalte (grafik und html teil)

    danach der html teil:

    PHP-Code:
    $botschaft.="Content-Type: text/html;charset=iso-8859-1\n";
    $botschaft.="Content-Transfer-Encoding: base64\n\n";
    $botschaft .= chunk_split(base64_encode($HTMLContent)); 
    dieser teil funktioniert und ist nur der vollständigkeit wegen dabei.

    jetzt der kritische teil, die grafik:

    PHP-Code:
    $botschaft .= "<img src=cid:4711 border=0>";

    $botschaft.="\n--$grenze\n";
    $botschaft.="Content-Type: image/jpg;\n\tname=".$dateiname."\n";
    $botschaft.="Content-Transfer-Encoding: base64\n";
    $botschaft.="Content-ID: <CID>\n";
    $botschaft.="Content-Disposition:inline;filename=".$dateiname."\n\n"
    danach erfolgt noch das einlesen der datei etc.:

    PHP-Code:
    $zeiger_auf_datei=fopen($datei,"rb");
    $inhalt_der_datei=fread($zeiger_auf_datei,filesize($datei));
    fclose($zeiger_auf_datei);
    $inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
    $botschaft.=$inhalt_der_datei
    das script ist wurde von mir in diese form gebracht und sollte eigentlich funktionieren.
    der html teil wird auch korrekt angezeigt aber die inline grafik macht probleme. in der mail selbst werden eine reihe
    seltsame symbole angezeigt (ich nehme
    an da liegt ein codierungsfehler vor?)
    und die grafik wird als anhang mitgesendet. also nicht eingebunden wie das eigentlich sein soll.

    findet hier vielleicht jemand den fehler beim drüber schauen?


  • #2
    Wo liegt der Sinn hierin?
    PHP-Code:
    $botschaft.="Content-ID: <CID>\n"
    Statttdessen nicht vielleicht lieber?
    PHP-Code:
    $botschaft.="Content-ID: <4711>\n"

    Kommentar


    • #3
      klar, das ist im script auch so.
      als ich den beitrag erstellt habe, hab ich meine bezeichnungen rausgekommen
      (email adresse etc.) und durch platzhalter ersetzt.
      das hab ich dabei übersehen.

      Kommentar


      • #4
        Zitat von Pyro
        klar, das ist im script auch so.
        als ich den beitrag erstellt habe, hab ich meine bezeichnungen rausgekommen.
        Die muss ja sehr geheim sein, Deine CID, - vor allem da sie ja in Deinem Image-Tag schon steht... :wink:


        Schau Dir doch einmal den Quelltext einer "Multipart-Mail" an und versuche Dein Skript dementsprechend aufzubauen.

        Im Übrigen solltest Du etwas genauer arbeiten. Der Mimetype image/jpg existiert meines Wissens nach nicht, außerdem heißt es nicht tname, Dein Boundary ist auch nicht gerade clever gewählt/nicht überall wo nötig gesetzt etc.


        Wenn Dir nicht unbedingt am Basteln liegt, kannst du auch den phpmailer verwenden, oder schau einmal bei http://www.php.net/mail vorbei (unter den Kommentaren finden sich - glaube ich - einige Beispiele zum Versenden von Multipart-Mails)... :wink:


        /edit:

        Falls es Dich interessiert, so generiert Thunderbird die Mail:
        Zitat von Mozilla Thunderbird
        ...
        MIME-Version: 1.0
        To: ***@gmx.net
        Content-Type: multipart/related;
        boundary="------------040209020705080205040909"

        This is a multi-part message in MIME format.
        --------------040209020705080205040909
        Content-Type: text/html; charset=ISO-8859-15
        Content-Transfer-Encoding: 7bit

        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <meta content="text/html;charset=ISO-8859-15"
        http-equiv="Content-Type">
        <title></title>
        </head>
        <body>
        [img]cidart1.05010104.06050804@gmx.net[/img]
        </body>
        </html>

        --------------040209020705080205040909
        Content-Type: image/jpeg;
        name="bild.jpg"
        Content-Transfer-Encoding: base64
        Content-ID: <part1.05010104.06050804@gmx.net>
        Content-Disposition: inline;
        filename="bild.jpg"

        ###base64-kodierte Bilddatei##
        --------------040209020705080205040909--
        Vielleicht kannst Du Dir ja was abschauen... :wink:

        Kommentar


        • #5
          danke für die ausführliche antwort!

          Die muss ja sehr geheim sein, Deine CID, - vor allem da sie ja in Deinem Image-Tag schon steht...
          nein, geheim nicht. ich wollte das script nur so klein und übersichtlich wie möglich halten. deshalb hab ich einfach 4711 genommen. :wink:

          Im Übrigen solltest Du etwas genauer arbeiten. Der Mimetype image/jpg existiert meines Wissens nach nicht
          doch den gibt es. sihe hier:
          http://de.selfhtml.org/diverses/mimetypen.htm
          wobei ich gerade sehe das es jpeg heissen muss.

          Wenn Dir nicht unbedingt am Basteln liegt, kannst du auch den phpmailer verwenden
          ich wusste das dieser vorschlag kommt. bei allen problemen mit mail wird phpmailer vorgeschlagen. :wink:
          geht bei mir aber 1. aus organisatorischen gründen und 2. aus lizenzrechtlichen gründen nicht.

          oder schau einmal bei http://www.php.net/mail vorbei (unter den Kommentaren finden sich - glaube ich - einige Beispiele zum Versenden von Multipart-Mails)...
          das ist richtig. die beispiele hab ich mir auch angeschaut. anhand dieser informationen und anderen quellen hab ich mein script dann auch aufgebaut.

          außerdem heißt es nicht tname
          heisst es auch nicht. das ist ein \t und dann name.

          ich hab den quellcode gepostet weil ich dachte es wäre irgendein offensichtlicher fehler.
          ich schau mir mal die thunderbird mail an.
          vielen dank.

          Kommentar


          • #6
            Zitat von Pyro
            wobei ich gerade sehe das es jpeg heissen muss.
            Das meinte ich!

            Zitat von Pyro
            heisst es auch nicht. das ist ein \t und dann name.


            Zitat von Pyro
            ich hab den quellcode gepostet weil ich dachte es wäre irgendein offensichtlicher fehler.
            Was mir noch so gerade aufgefallen ist:

            Du verwendest in dem als base64-kodiert definierten HTML-Teil einen unkodierten String:
            PHP-Code:
            $botschaft .= "<img src=cid:4711 border=0>"
            Außerdem fehlen noch die Anführungszeichen bei boundary:
            PHP-Code:
            $header .="Content-Type: multipart/related;\n\tboundary=\"$grenze\"\n"
            Vielleicht hilft es ja schon...

            Kommentar


            • #7
              teilweise scheint das geholfen zu haben.
              ich hab jetzt keine codierten zeichen mehr in der mail selbst allerdings wird die grafik
              immer noch als normales attachment angehangen.

              Kommentar


              • #8
                problem ist gelöst. ich hab eine freie klasse gefunden die das für mich übernimmt.
                ich würd zwar immer noch gerne wissen was der fehler in meinem script ist aber
                ich hab keine zeit mehr mich weiter damit zu befassen :wink:

                karl-150, vielen dank für deine umfangreiche hilfe.

                Kommentar


                • #9
                  Welche Klasse? Lass mal Link da.

                  Kommentar


                  • #10
                    htmlMimeMail5

                    http://www.phpguru.org/static/mime.mail.html

                    steht unter der gpl, für meine zwecke also eigentlich unbrauchbar. aber ich lass das
                    jetzt erstmal so damit ich weiterkomme.

                    Kommentar

                    Lädt...
                    X