email mit anhang - einer zuviel?

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

  • email mit anhang - einer zuviel?

    Hallo..
    Folgendes Problem: die Email wird mit Anhang verschickt. Die im Array enthaltenen Dokumente sind vorhanden. Allerdings habe ich noch eine attachment.pdf im Anhang? Wo kommt die die her?

    PHP-Code:
    <?
        // Festlegen der Variablen
        $dokumente_num    = count($dokumente);
        $Empfaenger = "meine@email.de";
        $betreff = "Meine Daten";
        $Header = "From: mir<meine@email.de>";
        $Content = "";
        
        // Beginn der Mail    
        $Trenner = md5(uniqid(time()));
        $Header .= "\n";
        $Header .= "MIME-Version: 1.0";
        $Header .= "\n";
        $Header .= "Content-Type: multipart/mixed; boundary=$Trenner";
        $Header .= "\n\n";
        $Header .= "This is a multi-part message in MIME format";
        $Header .= "\n";
        $Header .= "--$Trenner";
        $Header .= "\n";
        $Header .= "Content-Type: text/plain";
        $Header .= "\n";
        $Header .= "Content-Transfer-Encoding: 8bit";
        $Header .= "\n\n"; 
        $Header .= $Content; 
        $Header .= "\n";
        
        
        // Dokumente anhängen
        for ($i=0; $i <= $dokumente_num; $i++) {
        
            $filename = $pdf_pfad.$dokumente[$i];
            $filenameMail = $dokumente[$i];
            $Header .= "--$Trenner";
            $Header .= "\n";
            $Header .= "Content-Type: application/pdf; name=".$filenameMail;
            $Header .= "\n";
            $Header .= "Content-Transfer-Encoding: base64";
            $Header .= "\n";
            $Header .= "Content-Disposition: attachment; filename=".$filenameMail;
            $Header .= "\n\n";
            $Dateiinhalt = fread(fopen($filename, "r"), filesize($filename));
            $Header .= chunk_split(base64_encode($Dateiinhalt));
            $Header .= "\n";
            
        }
        $Header .= "--$Trenner--";
        $status = mail($Empfaenger, $betreff, "", $Header); 
    ?>
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

  • #2
    Verwende anstelle von \n mal \r\n
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      ich hab leider gerade das selbe problem.
      allerdings wirkt das \r\n nicht ...

      ansonsten habe ich den selben script (fast)

      woran könnte es noch liegen?
      Design & Coding with a breeze of madness at xjonx

      Kommentar


      • #4
        Der Abschluss des Headers erfolgt mit \r\n\r\n
        statt
        PHP-Code:
        $Header .= "--$Trenner--"
        also
        PHP-Code:
        $Header .= "--$Trenner--\r\n\r\n"
        "Nicht jeder Mensch kann und soll Programmieren[...]".

        Kommentar


        • #5
          ich hab ansich noch ne gute lösung:

          PHP-Code:
          for ($i 0$i $docs$i++) { 
          und nicht

          PHP-Code:
          for ($i 0$i <= $docs$i++) { 
          Aber danke.
          Design & Coding with a breeze of madness at xjonx

          Kommentar


          • #6
            Und wieso übergibst du den Inhalt der Email und die Header der einzelnen Parts in Header an Mail ? afaik gehören Header des Emailparts und Inhalt des Parts in eine eigene Var welche als body an mail() übergeben wird
            bool mail ( string $to, string $subject, string $message [, string $additional_headers [, string $additional_parameters]] )
            also die Header der einzelnen Parts und deren Inhalt gehören in message und nicht in additional headers. Dorthin gehören nur die Angaben, die Email weit gültig sind.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              ja weiß ich ja ... nur leider krieg ich das nicht fehler frei getrennt.
              sonst würde ich es auch lieber so machen ...
              Design & Coding with a breeze of madness at xjonx

              Kommentar


              • #8
                nur leider krieg ich das nicht fehler frei getrennt.
                und dann behälst du es lieber fehlerbehaftet zusammen
                Was spricht denn dagegen ein Var body einzuführen
                PHP-Code:
                $Header .= "\n";
                $Header .= "MIME-Version: 1.0";
                $Header .= "\n";
                $Header .= "Content-Type: multipart/mixed; boundary=$Trenner";
                $Header .= "\n\n";
                $body .= //Ab hier nur noch Body verwenden 
                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  also so, am bsp:
                  PHP-Code:
                  <?

                      $dokumente_num    = count($dokumente);
                          $Empfaenger = "meine@email.de";
                          $betreff = "Meine Daten";
                          $header = "From: mir<meine@email.de>";
                          $Content = "";

                          // Beginn der Mail    
                          $Trenner = md5(uniqid(time()));
                          $header .= "\n";
                          $header .= "MIME-Version: 1.0";
                          $header .= "\n";
                          $header .= "Content-Type: multipart/mixed; boundary=$Trenner";
                          $header .= "\n\n";
                          $body   .= "This is a multi-part message in MIME format";
                          $body   .= "\n";
                          $body   .= "--$Trenner";
                          $body   .= "\n";
                          $body   .= "Content-Type: text/plain";
                          $body   .= "\n";
                          $body   .= "Content-Transfer-Encoding: 8bit";
                          $body   .= "\n\n"; 
                          $body   .= $Content; 
                          $body   .= "\n";


                          // Dokumente anhängen
                          for ($i=0; $i <= $dokumente_num; $i++) {

                              $filename = $pdf_pfad.$dokumente[$i];
                              $filenameMail = $dokumente[$i];
                              $body .= "--$Trenner";
                              $body .= "\n";
                              $body .= "Content-Type: application/pdf; name=".$filenameMail;
                              $body .= "\n";
                              $body .= "Content-Transfer-Encoding: base64";
                              $body .= "\n";
                              $body .= "Content-Disposition: attachment; filename=".$filenameMail;
                              $body .= "\n\n";
                              $Dateiinhalt = fread(fopen($filename, "r"), filesize($filename));
                              $body .= chunk_split(base64_encode($Dateiinhalt));
                              $body .= "\n";

                          }
                          $body   .= "--$Trenner--";
                          $status = mail($Empfaenger, $betreff, $body, $header);

                  ?>
                  Design & Coding with a breeze of madness at xjonx

                  Kommentar


                  • #10
                    php5 & mysql5 sei dank gehts nun auch einfacher

                    PHP-Code:
                    <?php
                    // Festlegen der Variablen
                    $dokumente_num    count($dokumente);
                    $Empfaenger     "deine@email.de";
                    $Betreff    "Eine Email mit Anhang für PHP-Resource";
                    $Absender   "From: email <mein@email.de>";
                    $Nachricht  "txt der mail"


                    // Aufbau der Nachricht und des Anhangs
                        
                    for ($i=0$i <= $dokumente_num-1$i++) {
                        
                            
                    $Nachricht .= "\r\n";
                            
                    $Nachricht .= "begin 666 ".$dokumente_num[$i]."\r\n";
                            
                    $Nachricht .= convert_uuencode(fread(fopen($dokumente_num[$i], "r"), filesize($dokumente_num[$i])));
                            
                    $Nachricht .= "end\r\n";
                        }

                    mail($Empfaenger$Betreff$Nachricht$Absender);

                    ?>
                    so geht bei mir optimal und auch bei mehreren anhängen ganz einfach
                    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

                    Kommentar


                    • #11
                      bei mir kein anhang

                      PHP-Code:

                              $Empfaenger 
                      "$email_ziel";
                              
                      $betreff "$betreff";
                              
                      $header  "From: mir<meine@email.de>";
                          
                      $header  .= "To: ".$email_ziel."\r\n";
                              
                      $Content "xyz";

                              
                      // Beginn der Mail    
                              
                      $Trenner md5(uniqid(time()));
                              
                      $header .= "\n";
                              
                      $header .= "MIME-Version: 1.0";
                              
                      $header .= "\r\n";
                              
                      $header .= "Content-Type: multipart/mixed; boundary=$Trenner";
                              
                      $header .= "\n\n";
                          
                      $body   $Content
                          
                      $body   .= "\r\n"
                              
                      $body   .= "This is a multi-part message in MIME format";
                              
                      $body   .= "\n";
                              
                      $body   .= "--$Trenner--";
                              
                      $body   .= "\n";
                              
                      $body   .= "Content-Type: text/plain";
                              
                      $body   .= "\n";
                              
                      $body   .= "Content-Transfer-Encoding: 8bit";
                              
                      $body   .= "\n\n"
                              
                      //$body   .= $Content; 
                              
                      $body   .= "\n"
                          if (
                      $anhang_1_name) { 
                              
                      $filename "tmp_upload/".$anhang_1_name;
                                  
                      $filenameMail $anhang_1_name;
                                  
                      $body .= "--$Trenner--";
                                  
                      $body .= "\n";
                                  
                      $body .= "Content-Type: application/pdf; name=".$filenameMail;
                                  
                      $body .= "\n";
                                  
                      $body .= "Content-Transfer-Encoding: base64";
                                  
                      $body .= "\n";
                                  
                      $body .= "Content-Disposition: attachment; filename=".$filenameMail;
                                  
                      $body .= "\n\n";

                                  
                      $fff chunk_split(base64_encode(file_get_contents($filename)));

                      echo 
                      "f=$fff <br> name = $filename";

                                  
                      $body .= "\r\n"
                              }
                              
                      $body .= "--$Trenner--"
                              
                      $status mail($Empfaenger$betreff$body$header); 
                      sobald ich $fff in den body hänge ( $body = .$fff; ) wird keine email versendet.
                      ohne gehts aber dann is auch kein anhang dran.
                      fotos :

                      http://www.flickr.com/photos/rassloff/collections/

                      Kommentar


                      • #12
                        Lösung gefunden - Email mit Anhang

                        PHP-Code:

                        function email_anhang$email_ziel$betreff$mail_text$absender$anhang_1_name ){
                            
                        $boundary md5(uniqid(rand(), 1));
                            
                        $header ="MIME-Version: 1.0\n";
                            
                        $header.="From: $absender\n";
                            
                        $header.="Content-Type: multipart/mixed; boundary=" $boundary "\n";
                            
                            
                        $msg="\n--" $boundary "\n";
                            
                        $msg.="Content-Type: text/html;charset=iso-8859-1\n";
                            
                        $msg.="Content-Transfer-Encoding: base64\n\n";
                            
                        $msg.= chunk_split(base64_encode("
                                <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"
                                    \"http://www.w3.org/TR/REC-html40/loose.dtd\">
                                <html><head>
                                <title>
                        $betreff</title>
                                </head><body>
                                <b>
                        $mail_text - Das ist noch eine Testmail mit Anhang.</b>
                                </body></html>\n"
                        )); 

                            
                        $msg.="\n--" $boundary "\n";

                            
                        $msg.="Content-Type: Application/pdf; name=$anhang_1_name\n";
                            
                        $msg.="Content-Transfer-Encoding: base64\n";
                            
                        $msg.="Content-Disposition:attachment;filename=$anhang_1_name\n\n";
                            
                        $f=fopen("tmp_upload/$anhang_1_name","rb");
                            
                        $msg.=chunk_split(base64_encode(fread($f,filesize("tmp_upload/$anhang_1_name"))));
                            
                        fclose($f);

                            
                        $msg.="\n--" $boundary "\n";
                            
                        $status mail($email_ziel$betreff$msg$header);
                            return 
                        $status;

                        fotos :

                        http://www.flickr.com/photos/rassloff/collections/

                        Kommentar


                        • #13
                          Der letzte MIME-Part einer Multipart-Message muss aber mit
                          Code:
                          --<BOUNDARY>--
                          abgeschlossen werden.
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar


                          • #14
                            aber sonst läuft es

                            welche zeile meinst du ????
                            fotos :

                            http://www.flickr.com/photos/rassloff/collections/

                            Kommentar


                            • #15
                              PHP-Code:
                                  $msg.="\n--" $boundary "\n"// <==== die hier
                                  
                              $status mail($email_ziel$betreff$msg$header);
                                  return 
                              $status
                              Wenn es sonst läuft, ist das Glück würde ich sagen. Es gibt Internet-Standards aber nicht ohne Grund und die sollte man einhalten.
                              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                              Super, danke!
                              [/COLOR]

                              Kommentar

                              Lädt...
                              X