PHP Kontaktformular mit Datei-Anhang funzt net

Dieses Thema im Forum "Webentwicklung" wurde erstellt von xxxkiller, 29. August 2005 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 29. August 2005
    ja auch ich als webmaster mod hab mal ne frage an euch
    ich hab mir nen kontaktformular mit der möglichkeit einen datei-anhang zu senden gecodet.
    nun mein problem is, dass nachdem man auf "Versenden" klickt hat....
    1.) keine email versendet wird
    2.) keine bestätigung angezeigt wird, ob es versendet wurde oder net (siehe ganz unten vom code)

    um euch die arbeit bissl zu erleichtern, hab ich euch das noch bissl auskommentiert. kp was falsch is, aber eigentlich sollte das einwandfrei funzen. ^^
    auch die die keine ahnung von php haben, können das teil bei euch auch mal ausprobiern und sagen ob es bei euch funzt.

    Danke schonmal im vorraus,
    euer Webmaster & GFX Mod

    PHP:
    <? php
    # Adresse, an die die Formulardaten gesendet werden sollen:
    $mailto  "xxxkiller@gmail.com" ;

    # Maximale Größe des Datei-Anhangs in Bytes:
    $max_attach_size  500000 ;
    ?>
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <style type="text/css">
    <!--
    body                { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; color: #000000; background: #ffff3; margin: 20px; padding: 0px; border: 0px; }
    .caution            { color: red; font-weight: bold; }
    -->
    </style>
    </head>
    <body>
    <?php
    if (isset( $_POST [ "form_submitted" ]))
     {
      
    // übergebene Variablen ermitteln:
      
    $name  $_POST [ 'name' ];
      
    $email  $_POST [ 'email' ];
      
    $subject  $_POST [ 'subject' ];
      
    $text  $_POST [ 'text' ];

      
    // Überprüfungen der Daten:
      
    unset( $errors );
      if (
    $email  !=  ""  and ! preg_match ( "/^[^@]+@.+\.\D{2,5}$/" $email ))  $errors [] =  "die E-Mail-Adresse sieht nicht richtig aus" ;
      if (
    $text  ==  "" $errors [] =  "es wurde kein Text eingegeben" ;
      if (
    $_FILES [ 'probe' ][ 'size' ] >  $max_attach_size $errors [] =  "Attachment zu groß (" . number_format ( $_FILES [ 'probe' ][ 'size' ]/ 1000 , 0 , "," , "" ). " KB) - Maximalgröße: " . number_format ( $max_attach_size / 1000 , 0 , "," , "" ). " KB" ;

      if (empty(
    $errors ))
       {
        
    $text  stripslashes ( $text );
        
    $subject  stripslashes ( $subject );
        if (
    $name  !=  "" $mail_name = $name ; else  $mail_name = "unbekannt" ;
        if (
    $subject  !=  "" $mail_subject  $subject ; else  $mail_subject  "kein Betreff" ;
        if (
    $email  !=  "" $mail_email  $email ; else  $mail_email  "email@unknown.xyz" ;
        
    $ip  $_SERVER [ "REMOTE_ADDR" ];

        
    // Wenn Attachment, dann MIME-Mail erstellen:
        
    if (isset( $_FILES [ 'probe' ][ 'name' ]) &&  trim ( $_FILES [ 'probe' ][ 'name' ]) !=  "" )
         {
          
    // Datei einlesen und codieren:
          
    $datei_content  fread ( fopen ( $_FILES [ 'probe' ][ 'tmp_name' ], "r" ), filesize ( $_FILES [ 'probe' ][ 'tmp_name' ]));
          
    $datei_content  chunk_split ( base64_encode ( $datei_content ), 76 , "\n" );

          
    // Boundary festlegen:
          
    $boundary  md5 ( uniqid ( rand ()));

          
    // Mail-Header:
          
    $mail_header  "From: " . $mail_name . " <" . $mail_email . ">\n" ;
          
    $mail_header  .=  "X-Sender-IP: " . $ip . "\n" ;
          
    $mail_header  .=  "MIME-Version: 1.0\n" ;
          
    $mail_header  .=  "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\n" ;
          
    $mail_header  .=  "This is a multi-part message in MIME format.\n" ;
          
    // Mail-Text:
          
    $mail_header  .=  "--" . $boundary ;
          
    $mail_header  .=  "\nContent-Type: text/plain" ;
          
    $mail_header  .=  "\nContent-Transfer-Encoding: 8bit" ;
          
    $mail_header  .=  "\n\n" . $text ;
          
    // Attachment:
          
    $mail_header  .=  "\n--" . $boundary ;
          
    $mail_header  .=  "\nContent-Type: " . $_FILES [ 'probe' ][ 'type' ]. "; name=\"" . $_FILES [ 'probe' ][ 'name' ]. "\"" ;
          
    $mail_header  .=  "\nContent-Transfer-Encoding: base64" ;
          
    $mail_header  .=  "\nContent-Disposition: attachment; filename=\"" . $_FILES [ 'probe' ][ 'name' ]. "\"" ;
          
    $mail_header  .=  "\n\n" . $datei_content ;

          
    // Ende:
          
    $mail_header  .=  "\n--" . $boundary . "--" ;
          
    // Sende E-Mail und gebe Fehler bzw. Bestaetigung aus
          
    if (@ mail ( $mailto , $mail_subject , "" , $mail_header ))  $sent  true ; else  $errors [] =  "keine Verbindung zum Mailserver - bitte nochmal versuchen" ;
         }
        
    // kein Attachment, normale E-Mail:
        
    else
         {
          
    $mail_header  "From: " . $mail_name . " <" . $mail_email . ">\n" ;
          
    $mail_header  .=  "X-Sender-IP:  $ip \n" ;
          
    $mail_header  .=  "Content-Type: text/plain" ;
          if (@
    mail ( $mailto , $mail_subject , $text , $mail_header ))  $sent  true ; else  $errors [] =  "keine Verbindung zum Mailserver - bitte nochmal versuchen" ;
         }

        
    // Kopie an Absender:
        
    if (isset( $sent ) && isset( $email ) &&  $email  !=  ""  && isset( $_POST [ 'copy' ]))
         {
          if (isset(
    $_FILES [ 'probe' ][ 'name' ]) &&  trim ( $_FILES [ 'probe' ][ 'name' ]) !=  "" $copy_mail_text  "Kopie der versendeten E-Mail:\n\n" . $text . "\n\nAttachment: " . $_FILES [ 'probe' ][ 'name' ]; else  $copy_mail_text  "Kopie der versendeten E-Mail:\n\n" . $text ;
          
    $header "From: " . $mailto . "\n" ;
          
    $header  .=  "X-Sender-IP: " . $ip . "\n" ;
          
    $header  .=  "Content-Type: text/plain" ;
          @
    mail ( $email $mail_subject $copy_mail_text $header );
         }
       }
     }

    if (empty(
    $sent ))
     {
      if(isset(
    $errors ))
       {
        
    ?><p class="caution">Fehler:</p><ul><?php  foreach( $errors  as  $f ) {  ?><li><?php  echo  $f ?></li><?php  ?></ul><br /><?php
       
    }

      
    ?><form method="post" action="<?php  echo  basename ( $_SERVER [ "PHP_SELF" ]);  ?>" enctype="multipart/form-data"><div>
      <p><b>Name:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="name" value="<?php  if (isset( $name )) echo  htmlentities ( stripslashes ( $name )); else echo  "" ?>" size="35" />
      <p><b>eMail:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="email" value="<?php  if (isset( $email )) echo  htmlentities ( stripslashes ( $email )); else echo  "" ?>" size="35" />
      <p><b>Betreff:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="subject" value="<?php  if (isset( $subject )) echo  htmlentities ( stripslashes ( $subject )); else echo  "" ?>" size="35" />
      <p><b>Nachricht:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<textarea name="text" cols="26" rows="5"><?php  if (isset( $text )) echo  htmlentities ( stripslashes ( $text )); else echo  "" ?></textarea>
      <p><b>Datei-Anhang:</b>&nbsp;<input type="file" name="probe" value="<?php  if (isset( $_POST [ 'probe' ])) echo  htmlentities ( stripslashes ( $_POST [ 'probe' ])); else echo  "" ?>" size="20"/>
      <br />
      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="form_submitted" value="Versenden" /> <input type="checkbox" name="copy" value="true" /> Kopie an Absender</p>
      </div></form><?php
     
    }
    else
     {
      if (empty(
    $email )) {  ?><p><b>Danke!</b><br />Nachricht erfolgreich versendet. Allerdings wurde keine E-Mail-Adresse angegeben, ich kann also nicht antworten :P</p><?php  }
      else { 
    ?><p><b>Danke!</b><br />Nachricht erfolgreich versendet.</p><?php  }
     }

    ?>
     
  2. 29. August 2005
    lädst es auch bei einem server hoch der smtp unterstützt ?
     
  3. 29. August 2005
    Vermute auch dass es an dem liegt. Habs selbst probiert -
    die Mail is angekommen und eine Versandsbestätigung wurde auch ausgegeben:
    Danke!
    Nachricht erfolgreich versendet.
     
  4. 29. August 2005
    dach ich mir schon denn der befehl mail() ist richtig eingegeben worden.
    musst halt woanders uploaden, hauptsache der server unterstützt smtp...
    aber von funpic würde ich abraten denn da kommt in der mail immer so ein dummer
    title von funpic von wegen es kommt daher und daher etc.
     
  5. 29. August 2005
    hm ja danke an dem könnts wahrscheinlich liegen. is zwar paidspace, aber ich frag mal mein hoster. ansonsten probier ichs mal bei evanzo :]

    @Sytec danke für die bestätigung das es überhaupt funzt.
    dann weiss ich das auch

    hab euch nun auch mal 10er verteilt ^^

    so long

    ~#closed#~
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.