E-Mail mit HTML und Bild inline - Scriptproblem

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

  • E-Mail mit HTML und Bild inline - Scriptproblem

    Hallo Mitstreiter, ich möchte eine E-Mail mit Bild (das nicht nachgeladen werden soll) versenden. Das script hat irgend eine Macke: in der verschickten E-Mail steht am Ende nur der Text und der Alternativtext des imgages.

    $Empfaenger = "die@adresse.de";
    $Sender = "dieAndere@adresse.de";
    $Betreff = "Gruesse!";

    $Trenner = md5(uniqid(time()));

    $Header = "From: Absender<$Sender>";
    $Header .= "\r\n";
    $Header .= "MIME-Version: 1.0";
    $Header .= "\r\n";
    $Header .= "Content-Type: multipart/related; boundary=$Trenner";

    $CID = md5(uniqid(rand(),1));

    $ImgName = "logo.gif";
    $ImageLocation = "img/logo.gif";

    $MailBody = "--".$Trenner."\r\n";
    $MailBody.= "Content-Type: Text/HTML; charset=iso-8859-1\r\n";
    $MailBody.= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
    $MailBody.="<html><body>Hier steht mein Text <img src=\"cid:".$CID.$ImgName."\" alt=\"Bild\"></body></html>";
    $MailBody.= "\r\n\r\n";
    $MailBody.= "--".$Trenner."\r\n";
    $MailBody.= "\r\n\r\n";

    $fp = fopen ($ImageLocation, "rb");
    $str = fread ($fp, filesize ($ImageLocation));

    $data = chunk_split(base64_encode($str));
    $content.= "Content-Type: image/gif\r\n";
    $content.= "Content-ID: <$CID.$ImgName>\r\n";
    $content.= "Content-Transfer-Encoding: base64\r\n";
    $content.= "Content-Disposition: inline; filename=\"$ImgName\"\r\n\r\n";

    $content.= $data;
    $MailBody.= $content;
    $MailBody.= "--".$mime_boundary."--\r\n";

    mail($Empfaenger, $Betreff, $MailBody, $Header);
    Der frank-o-matic ist kein Sirius Cybernetic Corporation Produkt!

  • #2
    auf den ersten blick:
    PHP-Code:
    <img src=\"cid:".$CID.$ImgName."\" alt=\"Bild\"> 
    müßte da nicht $ImageLocation stehen?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Nee, das Bild wird ja eben nicht beim Lesen der Mail vom server geladen, sondern umgewandelt, liegt direkt im content der Mail und irgendwie über die eindeutige cid angesprochen.
      Der frank-o-matic ist kein Sirius Cybernetic Corporation Produkt!

      Kommentar


      • #4
        quelltext der mail mal angesehen?

        Kommentar


        • #5
          Ich werde aus dem Quelltext nicht schlau - da fehlt mir der entsprechende background:

          Mime-Version: 1.0
          Content-Type: multipart/mixed; boundary="=======AVGMAIL-4566C1624F63======="

          --=======AVGMAIL-4566C1624F63=======
          Content-Type: multipart/related; boundary=ed146662bc6855ae7bf6a51340adcd7d

          --ed146662bc6855ae7bf6a51340adcd7d
          Content-Type: Text/HTML; charset=iso-8859-1
          Content-Transfer-Encoding: quoted-printable

          <html><body>Hier steht mein Text <img src="cid:0b5e07ae91418dd73ba81ae0b18471ealogo.gif" alt="Bild"></body></html>

          --ed146662bc6855ae7bf6a51340adcd7d
          Content-Type: text/plain


          Content-Type: image/gif
          Content-ID: <0b5e07ae91418dd73ba81ae0b18471ea.logo.gif>
          Content-Transfer-Encoding: base64
          Content-Disposition: inline; filename="logo.gif"

          R0lGODlhDwE/ANUAAB4qZf///+rsv9XagMDHQIiRGWRvM0FNTOPk7Kuvxbm8zzpFeEhSglZfjHJ6
          ...(u.s.w.)
          hRU3Ycb12GPak3AYmKztDmxH4rcAGB63u71QQbCAAiJQAZRa8OHcjBsb3raDjJel3XeTexJh7qVf
          7Y0NRW0CBXkhE5z4/YQgAAA7
          ----


          --ed146662bc6855ae7bf6a51340adcd7d--
          --=======AVGMAIL-4566C1624F63=======
          Content-Type: text/plain; x-avg=cert; charset=us-ascii
          Content-Transfer-Encoding: quoted-printable
          Content-Disposition: inline
          Content-Description: "AVG certification"

          No virus found in this incoming message.
          Checked by AVG Free Edition.
          Version: 7.1.409 / Virus Database: 268.14.14/548 - Release Date: 23.11.2006
          =


          --=======AVGMAIL-4566C1624F63=======--
          Der frank-o-matic ist kein Sirius Cybernetic Corporation Produkt!

          Kommentar


          • #6
            Original geschrieben von samurai
            --ed146662bc6855ae7bf6a51340adcd7d
            Content-Type: Text/HTML; charset=iso-8859-1
            Content-Transfer-Encoding: quoted-printable
            [...]
            OK, Boundary, dann HTML-Part.
            --ed146662bc6855ae7bf6a51340adcd7d
            Content-Type: text/plain
            [...]
            Nochmal Boundary zur Abgrenzung des nächsten Parts, der text/plain-Version (die hier wohl aber nur aus ein paar Leerzeilen bestehen soll?).
            Content-Type: image/gif
            Content-ID: <0b5e07ae91418dd73ba81ae0b18471ea.logo.gif>
            Content-Transfer-Encoding: base64
            Content-Disposition: inline; filename="logo.gif"
            Huch, was ist das?

            Wenn das ein neuer Part sein soll, fehlt davor doch wohl die Boundary - ohne diese befinden wir uns immer noch im text/plain-Part.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Ja, das ist merkwürdig. Ich habe ja im code nichts von plain geschrieben. Wird das vom mailserver automatisch hinzugefügt?
              Den code habe ich noch mal sortiert und ein boundary hinzugefügt: mit dem Erfolg, dass das Bild jetzt immerhin schon im Anhang mitkommt!

              ...
              $Trenner = md5(uniqid(time()));
              $Header = "From: $sender<$sender>";
              $Header .= "\r\n";
              $Header .= "MIME-Version: 1.0";
              $Header .= "\r\n";
              $Header .= "Content-Type: multipart/related; boundary=".$Trenner;

              $CID = md5(uniqid(rand(),1));

              $ImgName = "logo.gif";
              $ImageLocation = "img/logo.gif";

              $fp = fopen ($ImageLocation, "rb");
              $str = fread ($fp, filesize ($ImageLocation));

              $MailBody = "--".$Trenner."\r\n";
              $MailBody.= "Content-Type: Text/HTML; charset=iso-8859-1\r\n";
              $MailBody.= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
              $MailBody.="<html><body>Hier steht mein Text <img src=\"cid:".$CID.$ImgName."\" alt=\"Bild\"></body></html>";
              $MailBody.= "\r\n\r\n";
              $MailBody.= "--".$Trenner."\r\n";

              $MailBody.= "Content-Type: image/gif\r\n";
              $MailBody.= "Content-ID: <$CID.$ImgName>\r\n";
              $MailBody.= "Content-Transfer-Encoding: base64\r\n";
              $MailBody.= "Content-Disposition: inline; filename=\"$ImgName\"\r\n\r\n";

              $MailBody.= chunk_split(base64_encode($str));

              $MailBody.= "--".$Trenner."\r\n";

              mail($Empfaenger, $Betreff, $MailBody, $Header);
              Der frank-o-matic ist kein Sirius Cybernetic Corporation Produkt!

              Kommentar


              • #8
                Original geschrieben von samurai
                Ja, das ist merkwürdig. Ich habe ja im code nichts von plain geschrieben. Wird das vom mailserver automatisch hinzugefügt?
                Es scheint auch noch was vom Virenscanner hinzugefügt zu werden, der die ganze Mail offenbar noch mal in einen Container kapselt - das würde ich zum Testen vielleicht erst mal abstellen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  AVG abgestellt - der Text wird jetzt als HTML dargestellt, aber vom Bild sehe ich noch nichts, nur den Alternativtext.
                  Habe ich das mit der $CID korrekt referenziert?
                  Der frank-o-matic ist kein Sirius Cybernetic Corporation Produkt!

                  Kommentar

                  Lädt...
                  X