S
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Mail with Attachment</title>
<meta http-equiv="content-type" content="text/html; charset= ISO-8859-1" />
</head>
<body>
<?php
if(!($_SERVER['REQUEST_METHOD']=='POST'))
{
?>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST" enctype="multipart/form-data">
<table>
<tr>
<td>Nachname:</td>
<td>
<input type="text" name="name" />
</td>
</tr>
<tr>
<td>Klasse:</td>
<td>
<select name="klasse">
<option>3BHD</option>
<option>2BHD</option>
</select>
</td>
</tr>
<tr>
<td>Übungsname:</td>
<td>
<input type="text" name="uebung" />
</td>
</tr>
<tr>
<td>Übung (als *.zip-File gepackt):</td>
<td>
<input type="file" name="file" accept="application/zip" />
</td>
</tr>
<tr>
<td>
<input type="submit" name="" value="Senden" />
</td>
<td> </td>
</tr>
</table>
</form>
<br />
<b>Achtung:</b> Ihre IP wird mitgeloggt, so dass eine Zurückverfolgung bei strafrechtlich relevanten Missbrauch dieses UploadCenters problemlos möglich ist! Spamming wird strafrechtlich verfolgt!
<br />
<br />
<br />
<br />
<b>Copyright 2004, Dominik Rauch <SideWinder@c-plusplus.net></b>
<?php
}
else
{
// Input aus Formular extrahieren
$name = $_POST['name'];
$klasse = $_POST['klasse'];
$uebung = $_POST['uebung'];
$filename = $_FILES['file']['name'];
$filesize = $_FILES['file']['size'];
$filetype = $_FILES['file']['type'];
$filetemp = $_FILES['file']['tmp_name'];
$loguser = "IP: ".$_SERVER['REMOTE_ADDR']."\nPort: ".$_SERVER['REMOTE_PORT']."\nBrowser: ".$_SERVER['HTTP_USER_AGENT']."\n";
// Input aus Formular auf Richtigkeit checken
if(trim($name)=='')
die('Geben Sie einen Namen an!');
if(trim($uebung)=='')
die('Geben Sie einen Namen für die Übung an!');
if(!file_exists($filetemp))
{
die('Die Datei konnte aus unbekanntem Grund nicht korrekt hochgeladen werden.');
}
else
{
if(!is_uploaded_file($filetemp))
die('Die Datei konnte aus unbekanntem Grund nicht korrekt hochgeladen werden.');
}
if($filesize > 1048576)
die('Die Maximalgröße für Dateien beträgt ein Megabyte.');
if($filetype != 'application/zip')
die('Die hochgeladene Datei muss vom Typ "*.zip" sein.');
// Aus dem Input den Output für die Mail generieren
$from = 'UploadCenter';
$to = 'anonymous@example.com';
$subject = $klasse.' '.$name.' '.$uebung;
$text = "Diese Mail wurde automatisch generiert um eine Übung zu senden.\n\nDiese Mail wurde in Auftrag gegeben von:\n".$loguser;
// Den Inhalt der hochgeladenen Datei für den Versand per Mail anpassen
$f = fopen($filetemp,'rb');
$filecontent = fread($f,filesize($filetemp));
fclose($f);
$filecontent = chunk_split(base64_encode($filecontent));
// Zufälligen String als Trenner zwischen Mail und Attachment generieren
$mimeboundary = '[ MIME-Boundary'.md5(mt_rand()).' ]';
// Mail bauen - Headers
$headers = "From: $from\r\n".
"MIME-Version: 1.0\r\n".
"Content-Type: multipart/mixed;\r\n".
" boundary=\"{$mimeboundary}\"";
// Mail bauen - Message
$message = "--{$mimeboundary}\n".
"Content-Type: text/plain; charset=\"ISO-8859-1\"\n".
"Content-Transfer-Encoding: 7bit\n\n".
$text.
"\n\n".
"--{$mimeboundary}\n".
"Content-Type: {$filetype};\n".
" name=\"{$filename}\"\n".
"Content-Transfer-Encoding: base64\n\n".
$filecontent.
"\n\n".
"--{$mimeboundary}".
"--\n";
// Mail senden
if(mail($to,$subject,$message,$headers))
{
?>
Mail wurde versendet.
<?php
}
else
{
?>
Mail konnte aus unbekanntem Grund nicht korrekt gesendet werden.
<?php
}
}
?>
</body>
</html>
Verbesserungsvorschläge kann man natürlich auch noch bringen
MfG SideWinder