Ankündigung

Einklappen
Keine Ankündigung bisher.

PHPMailer Anhang wird nicht mitgesendet

Einklappen

Neue Werbung 2019

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

  • PHPMailer Anhang wird nicht mitgesendet

    Hallo zusammen,

    wie schon beschrieben habe ich ein PHP Script in dem eine Email an mich gesendet wird, leider ohne Anhang.

    HTML-Code:
    <div class="btn g-color-white g-bg-stl-blue-v2-hover g-bg-stl-blue-v1 btn-lg g-mr-10 g-mb-15 g-mt-30">
                            Anschreiben:
                            <input type="hidden" name="MAX_FILE_SIZE" value="100000">
                            <input type="file" name="file" size="40" maxlength="100000">
                        </div>

    PHP-Code:
    if(isset($_POST["submit"])) {

        require 
    'phpmailer/PHPMailerAutoload.php';

        
    $mail = new PHPMailer;




        
    $mail->isSMTP();                                        // Set mailer to use SMTP
        
    $mail->Host 'smtp.mail.de';                          // Specify main and backup SMTP servers
        
    $mail->SMTPAuth true;                                 // Enable SMTP authentication
        
    $mail->Username 'mail@mail.com';            // SMTP username
        
    $mail->Password '#pw#';                        // SMTP password
        
    $mail->SMTPSecure 'tls';                              // Enable TLS encryption, `ssl` also accepted
        
    $mail->Port 25;                                       // TCP port to connect to
        
    $mail->CharSet "UTF-8";

        
    $mail->setFrom($_POST['email'], $_POST['nachname']);
        
    $mail->addReplyTo('mail@mail.com''Homepage');

        
    $mail->addAddress('mail@mail.com');           // Add a recipient

        
    $file_name $_FILES["file"]["name"];
        
    move_uploaded_file($_FILES["file"]["tmp_name"], $file_name);

        
    $mail->addAttachment($file_name);                       // Add attachments
        
    $mail->isHTML(true);                                    // Set email format to HTML


        
    $mail->Subject 'Betreff';
        
    $mail->Body    "..

                          "
    ;


        if(!
    $mail->send()) {

    echo 
    '<script type="text/javascript" language="Javascript">
    alert("Es ist ein Fehler aufgetreten")
    </script>'  
    ;



        } else {

    echo 
    '<script type="text/javascript" language="Javascript">
    alert("Email erfolgreich versendet!")
    </script>'
    ;          

        }

    }  
    ?> 

    Kann mir wer helfen?

  • #2
    PHP-Code:
        $file_name $_FILES["file"]["name"];
        
    move_uploaded_file($_FILES["file"]["tmp_name"], $file_name);

        
    $mail->addAttachment($file_name);                       // Add attachments 
    Da steckt dein Fehler.
    1. move_uploaded_file kann fehlschlagen - du überprüfst nix.
    2. $_FILES[...]['name'] enthält nur den Dateinamen der Uploaddatei, aber keinen Pfad. Das alleine dürfte schon reichen, das move_uploaded_file fehlschlägt.
    3. Du solltest auf jeden Fall einen vollständigen Pfad angegeben...
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Danke für die Antwort. Bin in der PHP Programmierung noch ziemlich neu, deswegen die Frage: was für einen Pfad sollte ich angeben?

      Kommentar


      • #4
        Einen absoluten Pfad, sowas wie "c:\temp\yourfile.png" oder "/var/tmp/yourfile.png".
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Aber die Datei liegt ja nicht bei mir auf dem PC sondern kommt als upload von einem Formular. Wie kann ich denn dann den Pfad eingeben? Den kenne ich doch noch nicht.

          Kommentar


          • #6
            Wenn du die Datei nicht bei dir abspeichern willst, warum nimmst du dann move_uploade_file?
            Hast du dir die Funktion mal im Handbuch angesehen?
            Weisst du was sie macht?

            PHP Mailer schreibt zu File Attachments
            The command to attach a local file is simply $mail->addAttachment($path);, where $path contains the path to the file you want to send
            Du prüfst auch nicht ob die Datei auch wirklich auf dem Server angekommen ist und ob kein Fehler dabei aufgetreten ist.
            Siehe $_FILES['uploaded_file']['error']

            Kommentar


            • #7
              OK habe den move_upload_file herausgenommen.

              Habe die Anhänge etwas geändert. Jetzt kommt zwar eine Email mit Anhang, kann den Anhang aber nicht öffnen (beschädigt!?)
              PHP-Code:
               $uploadfile tempnam(sys_get_temp_dir(), sha1($_FILES['attachment']['name']));

              $mail->AddAttachment($uploadfile'My upload file.pdf'); 

              Kommentar


              • #8
                Zitat von STL Beitrag anzeigen
                OK habe den move_upload_file herausgenommen.

                Habe die Anhänge etwas geändert. Jetzt kommt zwar eine Email mit Anhang, kann den Anhang aber nicht öffnen (beschädigt!?)
                Dann versuche doch mal, diesen anders zu untersuchen .....

                Kommentar


                • #9
                  Du solltest auch auf Fehler prüfen.

                  Wenn du die Datei nicht speichern willst, dann ersetze
                  PHP-Code:
                  $file_name $_FILES["file"]["name"];
                  move_uploaded_file($_FILES["file"]["tmp_name"], $file_name);

                  $mail->addAttachment($file_name);                       // Add attachments 
                  durch
                  PHP-Code:
                  // Add attachments    
                  if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {
                      
                  $mail->AddAttachment($_FILES['uploaded_file']['tmp_name'],
                                           
                  $_FILES['uploaded_file']['name']);

                  Kommentar


                  • #10
                    // Add attachments
                    if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {
                    $mail->AddAttachment($_FILES['uploaded_file']['tmp_name'],
                    $_FILES['uploaded_file']['name']);
                    }
                    danke für den Code. Es kommt auch keine Fehlermeldung, bzw. die Email wird korrekt gesendet. Nur der Anhang fehlt immer noch.

                    Kommentar


                    • #11
                      Dann liegt wohl ein Fehler vor.
                      Den musst du auch noch auslesen, damit du weisst woran es liegt.
                      direkt danach mal ein
                      PHP-Code:
                      var_dump($_FILES['uploaded_file']['error']); 
                      Die Nummer die dort steht kannst du nachlesen oder du schreibst dir gleich eine Funktion dazu, Beispiele in den User Comments.

                      Kommentar


                      • #12
                        Super jetzt funktioniert alles!!! Jetzt muss ich nur noch mehrer Anhänge hinzufügen und nur Dateien mit der Endung .pdf

                        Kommentar


                        • #13
                          Damit auch andere davon profitieren:
                          Woran lag es denn?

                          Kommentar


                          • #14
                            Ich habe die Datei auf eine bestimmte größe beschränkt. Diese Beschränkung habe ich raus genommen

                            Kommentar

                            Lädt...
                            X