Bilder in html-mails

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

  • Bilder in html-mails

    hallo zusammen,

    ich hab mir heut mithilfe eures forums eine klasse geschrieben, die html- oder text-mails mit und ohne attachment als multipart-messages versendet. eure scripts und beiträge dazu waren sehr hilfreich

    es gibt nur eine sache, die ich nicht hinbekommen habe und bei der mir die suche im forum auch keine hilfreichen beiträge liefern konnte.

    wenn ich eine html-email versende (bah, sowas macht man nicht, aber mancher kunde wills haben), und in dieser email bilder verwende (z.b. ein logo), wieso taucht das logo dann nicht in der mail auf, obwohl es mit gleichem namen attached wurde?

    beispiel: <html><body><img src="logo.jpg"> firmenname</body></html>
    an der email hängt die datei logo.jpg an ... wird auch richtig angezeigt, wenn ich die datei öffne. trotzdem wird es mir in der html-ansicht (outlook) nicht angezeigt

    muss ich bei den pfaden irgendetwas beachten oder bin ich komplett auf dem falschen dampfer. klar könnte ich auch einen externen link auf das imageverzeichnis der domain des kunden benutzen, aber sowas ist ja noch furchtbarer, als html-mails selbst


    hat jemand nen tip für mich?


    vielen dank vorab
    YellowSky

  • #2
    du musst das logo als cid im quelltext angeben.

    vergleich mal die quelltexte deine newsletter datei und zumbeispiel einer outlookdatei.

    OffTopic:
    Nix gegen HTML-Mails

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      du musst das logo als cid im quelltext angeben.
      ach gottchen ... so ein umstand.

      funktioniert das dann auch mit anderen mailreadern? speziell: was sagt aol dazu?? dann ist die methode mit dem nachladen des bildes vom server wohl doch die bessere!?

      aber ich hab gerade gesehen, dass die dateien doch nicht korrekt übertragen werden. ich schätze mal, da sind irgendwo zu viele oder zu wenige umbrüche ... siehst du zufällig, wo?

      (ausschnitt)
      PHP-Code:
      $this->attached[]=    "\n--$this->boundary".
          
      "\nContent-Type: application/octet-stream; name=\"$fileName\"".
          
      "\nContent-Transfer-Encoding: base64".
          
      "\nContent-Disposition: attachment; filename=\"$fileName\"".
          
      "\n\n".chunk_split(base64_encode($fileContent)); 

      Original geschrieben von TobiaZ
      Nix gegen HTML-Mails
      ich hab nix gegen html-mails ... zumindest nix wirksames )


      grüsse
      YellowSky

      Kommentar


      • #4
        also mit der cid das packen eben alle reader, die das packen
        (klasse auskunft) Naja, also outlook hats, mit aol hab ich nichts am hut, wenn der überhaupt html kann. aber denke die die multipart mit html könenn, können diese eingebetteten images auch machen.

        ich bin zufällig grade am selben thema dran. denke der user soll selber entscheiden, ob er eingebettet haben will, oder ausm web, oder als text. hat alles vor und nachteile

        "\n\n".chunk_split(base64_encode($fileContent));
        warum zwei \n? ist aber denke ich nicht der fehler

        ich hab nix gegen html-mails ... zumindest nix wirksames )
        der ist fies!

        Kommentar


        • #5
          Original geschrieben von TobiaZ
          also mit der cid das packen eben alle reader, die das packen
          (klasse auskunft) Naja, also outlook hats, mit aol hab ich nichts am hut, wenn der überhaupt html kann. aber denke die die multipart mit html könenn, können diese eingebetteten images auch machen.
          hmm, dann muss ich das mal bei aol testen. dummerweise haben die kunden immer nen aol-account und die grössten probleme, wenn man html-mails oder mails mit anhängen schickt (


          Original geschrieben von TobiaZ
          ich bin zufällig grade am selben thema dran. denke der user soll selber entscheiden, ob er eingebettet haben will, oder ausm web, oder als text. hat alles vor und nachteile
          welcher user? der empfänger? wie soll man das denn realisieren? ob html oder text kann man während des sendens entscheiden bzw. bekommt der empfänger eine multipart-message mit html- und text-teilen gesendet.

          Original geschrieben von TobiaZ
          warum zwei \n?
          gute frage, bei text-teilen müssen 2 zeilenumbrüche, damit die trennung zwischen header und text erkannt wird ... ich nehme mal an, dass das bei base64-teilen genauso gehen sollte ... aber auch mit einem umbruch ändert sich nix


          grüsse
          YellowSky

          Kommentar


          • #6
            Schau mal in den CodeSchnipsel nach, dort sollte eine Klasse drin sein mit der du sowas machen kannst...
            mfg
            Günni


            Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
            Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
            Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
            City-Tiger - Online durch die Straßen tigern...

            Kommentar


            • #7
              @Günni: Du spielverderber! Da hat er sich mühevoll ne eigene klasse gebaut, und jetzt muss er ne fertig nehmen und die ganze arbeit umsonst???

              bei mir können die user im profil entscheiden, was sie erhalten wollen. oder das system erkennt das autom.

              Kommentar


              • #8
                Original geschrieben von Günni
                Schau mal in den CodeSchnipsel nach, dort sollte eine Klasse drin sein mit der du sowas machen kannst...
                danke, die hab ich schon gefunden. deine klasse ist eigentlich die basis von meiner version. aber ich hab sie noch ein wenig erweitert bzw. vereinfacht

                und selbstgebaut ist schneller verstanden


                trotzdem danke
                YellowSky

                Kommentar


                • #9
                  da hast du recht!

                  wie war doch gleich der autor?

                  Kommentar


                  • #10
                    @TobiaZ: welcher autor?

                    @Günni: magst du vielleicht mal nen blick drauf werfen ... vielleicht fällt dir was auf.

                    PHP-Code:
                    class sendmail {

                      var 
                    $from    "";
                      var  
                    $to      = array();
                      var  
                    $subject  "";
                      var  
                    $text    "";
                      var  
                    $attached  = array();

                      function 
                    sendmail$f=''$t=''$s=''$b=''$a='' ) {
                        
                    $this->boundary    strtoupper(md5(uniqid(time())));
                        if( !empty(
                    $f) )  $this->from$f );
                        if( !empty(
                    $t) )  $this->to$t );
                        if( !empty(
                    $s) )  $this->subject$s );
                        if( !empty(
                    $b) )  $this->text$b );
                        if( !empty(
                    $a) )  $this->attachment$a );
                      }

                      function 
                    from$f$n='' ) {
                        
                    $this->from    = empty($n) ? $f "$n <$f>";
                      }

                      function 
                    to$t ) {
                        
                    $this->to    is_array($t) ? $t : array($t);
                      }

                      function 
                    subject$s ) {
                        
                    $this->subject  $s;
                      }

                      function 
                    text$t )    {
                        
                    $this->text  =  /* html text */
                                
                    "\n--$this->boundary".
                                
                    "\nContent-Type: text/html; charset=\"iso-8859-1\"".
                                
                    "\nContent-Transfer-Encoding: 8bit".
                                
                    "\n\n$t".
                                
                    /* plain text */
                                
                    "\n--$this->boundary".
                                
                    "\nContent-Type: text/plain; charset=\"iso-8859-1\"".
                                
                    "\nContent-Transfer-Encoding: quoted-printable".
                                
                    "\n\n".strip_tags($t);
                      }

                      function 
                    attachment$f$n='' ) {
                        
                    $fileContent    =  is_file($f) ? join(""file($f)) : $f;
                        
                    $fileName      =  empty($n) ? ( is_file($f) ? basename($f) : "attachment".count($attached).".dat" ) : $n;
                        if( !empty(
                    $fileContent) )
                                    
                    /* attach files */
                          
                    $this->attached[]=  "\n--$this->boundary".
                                    
                    "\nContent-Type: application/octet-stream; name=\"$fileName\"".
                                    
                    "\nContent-Transfer-Encoding: base64".
                                    
                    "\nContent-Disposition: attachment; filename=\"$fileName\"".
                                    
                    "\n\n".chunk_split(base64_encode($fileContent));
                      }

                      function 
                    send() {
                        
                    $headers  =  /* multipart header */
                                
                    "From: $this->from".
                                
                    "\nReply-To: $this->from".
                                
                    "\nX-Mailer: sendmail.class v.2 by future media".
                                
                    "\nMIME-Version: 1.0".
                                
                    "\nContent-Type: multipart/mixed; boundary=\"$this->boundary\"".
                                
                    "\n\nThis is a multi-part message in MIME format.".
                                
                    /* add text */
                                
                    $this->text.
                                
                    /* add attachments */
                                
                    join""$this->attached).
                                
                    /* end mail */
                                
                    "--$this->boundary--";

                        
                    $mailError  =  0;
                        foreach( 
                    $this->to as $to )
                          if( @
                    mail$to$this->subject""$headers ) ) $mailError--;

                        
                    // debug
                        
                    echo  "<textarea style='width:800;height:300'>$headers</textarea>";
                      }

                    }

                    // test

                    $MM  = new sendmail"MultipartMail <server@actionscripter.de>""tobias@actionscripter.de""testmail""das ist ein <img src='test.jpg'> <b>test</b>" );
                    $MM->attachment"test.jpg" );
                    $MM->send(); 

                    danke
                    YellowSky

                    Kommentar


                    • #11
                      die originalklasse

                      Kommentar


                      • #12
                        Original geschrieben von TobiaZ
                        die originalklasse
                        von Günni

                        Kommentar


                        • #13
                          ah, ich habs gefunden )

                          es muss so heissen:

                          PHP-Code:
                          $fileContent        =    is_file($f) ? fread(fopen($f,"rb"),filesize($f)) : $f
                          mit file($f) liest man die datei nicht binär aus, sondern als ascii ...

                          EDIT:

                          übrigends wird jetzt auch das bild in der mail angezeigt ohne dass ich was ändern muss




                          danke für eure hilfe
                          YellowSky
                          Zuletzt geändert von YellowSky; 10.09.2003, 22:14.

                          Kommentar


                          • #14
                            Poste deine Klasse wenn Sie fertig is auch noch in die Codeschnipsel...
                            mfg
                            Günni


                            Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                            Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                            Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                            City-Tiger - Online durch die Straßen tigern...

                            Kommentar


                            • #15
                              klar, wenn du dich damit nicht übergangen fühlst
                              wie gesagt mit mails hab ich mich bisher nicht beschäftigt gehabt und mir mein wissen hier (hauptsächlich von dir) zusammengeklaut ...


                              grüsse
                              YellowSky

                              Kommentar

                              Lädt...
                              X