Ankündigung

Einklappen
Keine Ankündigung bisher.

Emailanhang ist eine beschädigte Datei

Einklappen

Neue Werbung 2019

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

  • Emailanhang ist eine beschädigte Datei

    Hallo,

    Ich möchte eine Email mit Anhang versenden und habe dazu ein PNG auf meinen Server hochgeladen. Schicke ich eine Email mit dem PNG aber dann an mich kann die Datei nicht geöffnet werden, da sie angeblich fehlerhaft ist. Wenn ich mir die Dateien in vim anschaue, sind die komplett anders. (Siehe Bilder).

    Was mache ich falsch?

    Mein Skript:

    PHP-Code:
    <?PHP

    $emailtext 
    nl2br($_POST['emailtext']);
    $titel $_POST['titel'];


    $random_hash md5(date('r'time()));


    // Header erzeugen
    $header "From:…\r\n";
    $header .= "return-path:…\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";

    $dateiname 'bild.png';

    $attachment chunk_split(base64_encode(file_get_contents($dateiname)));


    $sql 'SELECT * FROM '.$mysql_prefix.'newsletter WHERE nl_aktiv=1';
    $erg mysql_query($sql);
    while (
    $l mysql_fetch_assoc($erg)) {
        
    ob_start();
        
        echo 
    '--PHP-mixed-'.$random_hash."\n";
        
        echo 
    'Content-Type: multipart/alternative; boundary="PHP-alt-'.$random_hash.'"'."\n";
        
        echo 
    '--PHP-alt-'.$random_hash.''."\n";
        
        echo 
    'Content-Type: text/plain; charset="iso-8859-1"'."\n";
        echo 
    'Content-Transfer-Encoding: 7bit'."\n";
        echo 
    'Guten Tag '.$l['nl_name'].',<br /><br />'.strip_tags($_POST['emailtext']).'<br /><br /><br /><br />Wenn Sie den Newsletter abbestellen m&ouml;chten, klicken Sie bitte <a href="'.$url_zu_basisordner.'index.php?spezial=newsletter4&id='.$l['nl_id'].'&name='.md5($l['nl_name']).'">hier</a>.';
        
        echo 
    '--PHP-alt-'.$random_hash.''."\n";
        
        echo 
    'Content-Type: text/html; charset="iso-8859-1"'."\n";
        echo 
    'Content-Transfer-Encoding: 7bit'."\n";
        
        echo 
    'Guten Tag '.$l['nl_name'].',<br /><br />'.$emailtext.'<br /><br /><br /><br />Wenn Sie den Newsletter abbestellen m&ouml;chten, klicken Sie bitte <a href="'.$url_zu_basisordner.'index.php?spezial=newsletter4&id='.$l['nl_id'].'&name='.md5($l['nl_name']).'">hier</a>.';
        
        echo 
    '--PHP-alt-'.$random_hash.'--'."\n";
        
        echo 
    '--PHP-mixed-'.$random_hash."\n";
        
        echo 
    'Content-Type: image/png; name="'.$dateiname.'" '."\n";
        echo 
    'Content-Transfer-Encoding: base64'."\n";
        echo 
    'Content-Disposition: attachment'."\n";
        echo 
    $attachment;
        
        echo 
    '--PHP-mixed-'.$random_hash.'>--';
        
        
    $message ob_get_clean();

        
    // eMail senden
        
    mail ($l['nl_email'], $titel$message$header);
        
        
        echo 
    '<br />Senden an: '.$l['nl_name'];
    }

    echo 
    '<br /><br />Alle Emails verschickt!';
    ?>


  • #2
    Du benutzt keine Mailer-Klasse. Das machst Du falsch.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Also bisher konnte ich problemlos Textemails verschicken mit dem obrigen Skript. Warum brauche ich gerade jetzt eine Klasse (also Objektorientierung?)?

      Kommentar


      • #4
        http://www.php.de/adventskalender-20...fverkehrs.html
        http://hallophp.de

        Kommentar


        • #5
          Ich würde dann eine Klasse benutzen, ich hätte jedoch noch eine Frage zur Lizenz:

          SwiftMailer ist ja unter der LGPL veröffentlicht. Kann ich den Mailer denn in ein Projekt einbauen, was nicht unter der GPL veröffentlicht wird oder gar als Closed Source verkauft wird? Würde da ein Hinweis reichen, dass ich den SwiftMailer benutze?

          Kommentar


          • #6
            Kann man wunderbar nachlesen.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              ...warum eine Mailklasse nutzen?...
              In deinem Code oben brauchst du gefühlte 30 Zeilen, um einen (auch noch falschen) Header zusammenzubasteln. Bei Einsatz von z.B. PHPmailer sieht der Code so aus:

              PHP-Code:
              $mail->AddAttachment('../bilder/bild.png','bild.png'); 
              Und diese Zeile funktioniert fehlerfrei.
              PHP-Code:
              if ($var != 0) {
                
              $var 0;

              Kommentar

              Lädt...
              X