php mail form met multie bijlage

Status
Niet open voor verdere reacties.

bouman4

Gebruiker
Lid geworden
2 jun 2003
Berichten
243
ik zoek een php mailform

wat het dus goed doet met meerdere bijlages hadt her en der al wat gevonden
maar is blijkbaar verouderde rampzalige rommel combineren van een gewoon mailform en uit een bijlage form wil me niet lukken .

hadt deze op hotscripts gevonden
PHP:
<div align="center">
<?php
//mail formulier voor bijlage
$email ='info@disco-gids.nl';
//geneer boundary
DEFINE('bound',md5(uniqid(time())));
//check request method


    if($_SERVER['REQUEST_METHOD'] == 'POST')
  if($from == "" || $email == "" || $subject == "" || $file == "" || $bericht == "")
  {
     echo "<center><small><font face=\"Arial\">Gelieve alle velden correct in te vullen.<br><a href=\"javascript:history.back(-1)\">Probeer het opnieuw</a></font></small></center>";
  }
  elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $email))
  {
     echo "<center><small><font face=\"Arial\">Gelieve een geldig e-mailadres in te vullen.<br><a href=\"javascript:history.back(-1)\">Probeer het opnieuw</a></font></small></center>";
  }
  else
  {
         //if file upload send with email as mixed
         if(!empty($_FILES['file']['name']))
         {
            //check filesize
             if($_FILES['file']['size'] < 1024*1024)
             {
                  $headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
                $headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
                   $headers .= "MIME-Version: 1.0\r\n";
                   //email bestaat uit meerdere  bestanden dus vertel wat de scheidings teken is en dat het een multipart is
                   $headers .= "Content-Type: multipart/mixed; boundary=\"".bound."\"\r\n";
                   //we zenden een attachment mee
                   $headers .= "Content-Disposition:  attachment\r\n";
                   //readfile
                   $fp = fopen($_FILES['file']['tmp_name'],'r');
                   $bestand = fread($fp,$_FILES['file']['size']);
                   fclose($fp);
                   //create body
                   //generenen een body. Dit is een multi part gezeik
                   $body.= "This is a multi-part message in MIME format.\r\n";
                   $body.= "\r\n";
                //boundary
                $body.= "--".bound."\r\n";
                //content type + charater set (iso in dit geval)
                $body.= "Content-Type: text/plain; charset=iso-8859-1\r\n";
                //codering (7 bit)
                $body.= "Content-Transfer-Encoding: 7bit\r\n";
                $body.= "\r\n";
                //het bericht
                $body.= $_POST['bericht'] ."\r\n";
                //boundary
                $body.= "--".bound."\r\n";
                //content type + naam bestand (database.sql)
                $body .= "Content-Type: application/octet-stream; name=".$_FILES['file']['name']."\r\n";
                //codering
                $body .= "Content-Transfer-Encoding: base64\r\n";
                //als bijlage toegevoegd
                $body.= "Content-disposition: attachment\r\n";
                $body .= "\n";
                //de inhoud van het bestand
                $body .= chunk_split(base64_encode($bestand )) . "\r\n";
                mail($email,$_POST['subject'],$body,$headers);
                echo 'Email (Met een bijlage) is verzonden';
            }
            else
            {
                 echo 'Bestands groote is te groot';
             }
        }
        else
        {
            $headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
               $headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
               $headers .= "MIME-Version: 1.0\r\n";
               $bericht = $_POST['bericht'];
               mail($email,$_POST['subject'],$bericht,$headers);
               echo 'Email (Zonder een bijlage) is verzonden';
         }
     }
     else
     {  "<div align=\"left\">";
        //mail formulier je moet zelf het fomullier maken
        echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"POST\" enctype=\"multipart/form-data\">";
         echo "Naam: <input type='text' name='from'><br>";
         echo "Email:<input type='text' name='email'><br>";
         echo "Onderwerp:<input type='text' name='subject'><br>";
         echo "Bestand:<input type='file' name='file'><br>";
         echo "Bericht:<textarea name='bericht'></textarea><br />";
        echo "<input type=\"submit\" value=\"Verzenden\">";
"</div>";
    }
?>
  </div>

zel al wat aan gesleuteled

en deze op eehm weet niet meer
PHP:
 // Dit script is eigendom van web-wizardz [[url]www.web-wizardz.nl][/url]. 

 
<?   
if($_SERVER['REQUEST_METHOD'] == 'POST'){   
    
  $max = "1500000";     // maximum grootte van het bestand
  $van  = "me@ww.nl"; //het e-mail adres van de webmaster

    if (!empty($_FILES['bijlage']['name'])){
    // als er een bestand is
     
		if (filesize($_FILES['bijlage']['tmp_name']) > $max){
         	echo"Het bestand is groter dan ". $max ." bytes!";
         	echo"<br><a href=javascript:history.back()>Klik hier om terug te gaan</a>";   
       	}else{
       
	        // het type van de bijlage achterhalen
	        $codering = (($_FILES['bijlage']['type'] == "text/plain") || ($_FILES['bijlage']['type'] == "text/html")) ? "8bit" : "base64";   
	     
	        // De bijlage controleren
	        $openen = @fopen($_FILES['bijlage']['tmp_name'],"r");  
         
          	if (!$openen){   
            	echo"Er is een probleem met de bijlage, probeer het a.u.b opnieuw.";
            	echo"<br><a href=javascript:history.back()>Klik hier om terug te gaan</a>";   
			}else{    
          
		           // bijlage lezen
		           $inhoud= fread($openen,filesize($_FILES['bijlage']['tmp_name']));   
           
		             // als de codering base46 is dan moet er worden gecodeerd
		             if ($codering == "base64"){  
	                 
	              	   $inhoud = chunk_split(base64_encode($inhoud));
	                 
		               $boundry = strtoupper(md5(uniqid(time())));  
		                
		               $header = "From: " . $van . "\n";    
		               $header .= "MIME-version: 1.0\n";  
		               $header .= "Content-Type: multipart/mixed;\n";   
		               $header .= "\tboundary= " . $boundry . "\n\n";    
		               $header .= "--" . $boundry . "\n";   
		               $header .= "Content-Type: text/plain;\n";   
		               $header .= "\tcharset=\"iso-8859-1\"\n";   
		               $header .= "Content-Transfer-Encoding: quoted-printable\n\n"; 
		                               
		               // het bericht toevoegen aan de mail
		               $header .=  $_POST['bericht'] . "\n\n";   
		               
		               // nog wat headertjes toevoegen
		               $header .= "--" . $boundry . "\n";   
		               $header .= "Content-Type: " . $_FILES['bijlage']['type'] . "\n";   
		               $header .= "Content-Transfer-Encoding: " . $codering . "\n";   
		               $header .= "Content-Disposition: attachment; filename=\"" . $_FILES['bijlage']['name'] . "\"\n\n";   
		               
		               // bijlage toevoegen
		               $header .= $inhoud . "\n\n";   
		               $header .= "--" . $boundry . "--";
		               
	             }
           
	             if (@mail($_POST['naar'],$_POST['onderwerp'],"",$header))   
					echo"De mail is succesvol verzonden!";
	             else  
					echo"de mail is niet verzonden, de fout is onbekend";        
				       
			}    
		}  
  
  }else{   
	  
		// er is geen bijlage toegevoegd, dus een plain/text mail sturen
		  $header = "From: " . $van . "\n";      
		  $header .= "Content-Type: text/plain;\n";   
		  $header .= "\tcharset=\"iso-8859-1\"\n";   
		  $header .= "Content-Transfer-Encoding: quoted-printable\n\n";   
	  
		  // het bericht
		  $header .=  $_POST['bericht'] . "\n\n";
		  
		if (@mail($_POST['naar'],$_POST['onderwerp'],"",$header))   
			echo"Mail sent!";   
		else   
			echo"Error sending email!";   
			
	}
	   
}else{   

	echo'
	<form enctype="multipart/form-data" action="'. $_SERVER['PHP_SELF'] .'" method="POST">
		<table width="500" cellspacing="0" cellpadding="0" border="0">
		<tr>
		  <td>Naar:</td>
		  <td><input type="text" size="40" name="naar"></td>
		</tr>
		<tr>
		  <td>Onderwerp:  </td>
		  <td><input type="text" size="40" name="onderwerp"> </td>
		</tr>
		<tr>
		  <td>Bericht:</td>
		  <td><textarea rows="8" cols="38" name="bericht"></textarea> </td>
		</tr>
		<tr>
		  <td>bijlage: </td>
		  <td><input type="file" name="bijlage">
		  </td>
		</tr>
		<tr>
		  <td></td>
		  <td><input type="submit" value="Verstuur" name="submit"></td>
		</tr>
		</table>
	</form>';
 
}   
?>
maar naadeel is dat je dus op moet geven waar het heen moet in plaats van wie het is toen ik dat omdraaide werkte hij ineens niet meer toen ik de bijlage cloonde ook niet

nou heb ik ooit een script omgebouwd dat naar en van dus invulbaar waren dat lukte me wel een tell a friend dus maar die heb ik maar uit de runing genomen geen antie spam erin. overigens zit dat hier ook niet in deze 2de bevalt me wel als iemand even kan helpen met hem multie bijlage te maken en even het van en naar omgedraaid kan krijgen.
ben ik ook al aardig tevreden want ben nu zowat 8 uur verder met zoeken en heb dus met google niks goed fatsoenlijks werkende gevonden op geen enkelde script site.

de grootste niet werken troep vondt ik dus alemaal wel
 
Laatst bewerkt door een moderator:
heb even verder gezocht deze is iets beter dan de vorige
http://www.sitemasters.be/?pagina=scripts/scripts&cat=15&id=1129
PHP:
<?php
// Your e-mail adress:
$mailto = "info@disco-gids.nl";

# Maximum size of attachment in bytes:
$max_attach_size = 500000;

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Formmailer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>
<body><?php
/*if (empty($_POST['form_submitted']))
 {
  ?></font><p><font color="#000000">Please fill out the form:</font></p>
<font color="#000000"><?php
 }
*/
 if (isset($_POST["form_submitted"]))
 {
  $name = $_POST['name'];
  $email = $_POST['email'];
  $subject = $_POST['subject'];
  $text = $_POST['text'];

  unset($errors);
  if ($email != "" and !preg_match("/^[^@]+@.+\.\D{2,5}$/", $email)) $errors[] = "e-mail address lijkt incorrect";
  if ($text == "") $errors[] = "Geen bericht geplaatst";
  if ($_FILES['probe']['size'] > $max_attach_size) $errors[] = "Bijlage is te groot(".number_format($_FILES['probe']['size']/1000,0,",","")." KB) - maximum size: ".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="Unknown";
    if ($subject != "") $mail_subject = $subject; else $mail_subject = "No subject";
    if ($email != "") $mail_email = $email; else $mail_email = "email@unknown.xyz";
    $ip = $_SERVER["REMOTE_ADDR"];

    // if attachment, MIME-Mail:
    if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "")
     {
      // read and encode file:
      $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:
      $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;
      // End:
      $mail_header .= "\n--".$boundary."--";
      // Sende E-Mail und gebe Fehler bzw. Bestaetigung aus
      if (@mail($mailto,$mail_subject,"",$mail_header)) $sent = true; else $errors[] = "no connection to the mailserver - please try again later";
     }
    // no attachment, normal 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[] = "no connection to the mailserver - please try again later";
     }

    // copy to sender:
    if (isset($sent) && isset($email) && $email != "" && isset($_POST['copy']))
     {
      if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "") $copy_mail_text = "Copy of the e-mail:\n\n".$text."\n\nAttachment: ".$_FILES['probe']['name']; else $copy_mail_text = "Copy of the 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))
   {
    ?></font><p class="caution"><font color="#000000">Error:</font></p><ul>
	<font color="#000000"><?php foreach($errors as $f) { ?></font><li>
	<font color="#000000"><?php echo $f; ?></li><?php } ?></font></ul>
<font color="#000000"><br /><?php
   }

  ?></font><form method="post" action="<?php echo basename($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data"><div>
  <p><font color="#000000"><span class="style2"><font face="Verdana" size="2">
	Naam</font></span><font face="Verdana" size="2"><span class="style2">:</span><br />
    </font>
    </font><font color="#000000">
    <input name="name" value="<?php if (isset($name)) echo htmlentities(stripslashes($name)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px dashed #000000" />
    <font face="Verdana" size="2">
    <br />
    <span class="style2">E-mail:</span><br />
	</font>
	</font><font color="#000000">
	<input name="email" value="<?php if (isset($email)) echo htmlentities(stripslashes($email)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px dashed #000000" />
	<font face="Verdana" size="2">
    <br />
    <span class="style2">Onderwerp:</span><br />
    </font>
    </font><font color="#000000">
    <input name="subject" value="<?php if (isset($subject)) echo htmlentities(stripslashes($subject)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px dashed #000000" />
    <font face="Verdana" size="2">
    <br />
    <span class="style2">Bericht:</span><br />
    </font>
    </font><font color="#000000">
    <textarea name="text" cols="25" rows="7" style="font-family: Verdana; border: 1px dashed #000000"><?php if (isset($text)) echo htmlentities(stripslashes($text)); else echo ""; ?>
    </textarea>
<font face="Verdana" size="2">
    <br />
    <span class="style2">Bijlagen:</span><br />
	</font>
	</font><font color="#000000">
	<input type="file" name="probe" value="<?php if (isset($_POST['probe'])) echo htmlentities(stripslashes($_POST['probe'])); else echo ""; ?>" size="16" style="font-family: Verdana; border: 1px dashed #000000"/>
	</font>
  </p>
  </p>
  <p><font face="Verdana"><font color="#000000"><input type="checkbox" name="copy" value="true" /></font><font size="2" color="#000000">
	<span class="style2">Kopietje naar jezelf sturen?</span> </font></font>
    <font color="#000000">
    <input type="submit" name="form_submitted" value="OK - Verzenden" style="font-family: Verdana; border: 1px dashed #000000" /></font><font face="Verdana" size="2" color="#FFFFFF">
	</font> </p>
  </div>
</form><font color="#000000"><?php
 }
else
 {
  if (empty($email)) { ?></font></font><font color="#000000"> </font>
<p><font color="#000000"><b><font face="Verdana" size="1">Bedankt</font></b><font size="1" face="Verdana"><b>!</b><br />
Je mail is verzonden alleen kan ik je niet terug mailen omdat je geen e-mail 
adres hebt ingevuld! </font></font></p>
<font face="Verdana" size="1"><font color="#000000"><?php }
  else { ?></font></font><font color="#00000"> </font>
<p><font color="#000000"><b><font face="Verdana" size="1">Bedankt</font></b><font size="1" face="Verdana"><b>!</b><br />
Je bericht is met succes verzonden ik zal zo spoedig mogelijk terug mailen. </font>
</font></p>
<font face="Verdana" size="1" color="#000000"><?php }
 }


?>

maar mist de multie bijlage
en de anti spam
iemand die me even kan helpen
 
ik heb het script uitgetest en een beetje aangepast zodat het nu nakijkt of je wel een email invult en dat je een file upload (is nodig voor mijn webiste )

maar ik zit met het kleine probleem dat ik niet weet hoe ik er moet toevoegen dat je aleen bepaalde bestanden kunt uploaden (aleen video bestanden in mijn geval :s )

kan iemand me er mee helpen ??

als je de code nodig hebt die ik heb , gelieve die dan te vragen :)

alvast bedankt

Groetjes van The Crasher
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan