Dieses Script bietet einen Webmailer, mit dem man eine beliebige Zahl Attachments und Text an eine Emailadresse schicken kann.
Lediglich die Email Adresse muss angepasst werden.
Zur Funktion müssen auf Userseite Cookies aktiviert sein, da sich das Script so "merkt", wem welche Attachments gehören.
<?php
/*
Emails mit Attachment verschicken
Aktion: PHP Scripte für die armen dieser Welt
Der Erlös geht für mein Pausenbrot drauf
Copyright (c) 2005 by Phillip 'Firebird' Berndt
*/
// Konfiguration
$sendTo = 'spam@webmail.web';
// Session Mist deaktivieren
ini_set('session.use_trans_sid', '0');
ini_set('session.use_only_cookies', '1');
// Jeder User bekommt seine eigene Session
session_name('sendMail_Session');
session_cache_expire(60);
session_start();
// Die Email gegen Crawler schützen
$sendTo_Htmlized = htmlspecialchars(str_replace(array('@', '.'), array(' [AUF] ', ' [PUNKT] '), $sendTo));
// Defaultwerte
if(!isset($_POST['subject']))
$_POST['subject'] = 'Webformular vom '.date('d.m.Y');
// Die Requests handeln
// Attachment anfügen
if(isset($_POST['addAttachment']) && $_FILES['attachment']['error'] == 0)
{
if(!isset($_SESSION['attachments']))
$_SESSION['attachments'] = array();
$newAttachment = &$_SESSION['attachments'][];
$newAttachment['name'] = $_FILES['attachment']['name'];
$newAttachment['size'] = $_FILES['attachment']['size'];
$newAttachment['data'] = chunk_split(base64_encode(file_get_contents($_FILES['attachment']['tmp_name'])));
$_SESSION['tmpPost'] = $_POST;
header('Location: '.$_SERVER['PHP_SELF'].'#attachments');
die();
}
// Attachment löschen
elseif(isset($_POST['deleteAttachment']))
{
unset($_SESSION['attachments'][array_shift(array_keys($_POST['deleteAttachment']))]);
$_SESSION['tmpPost'] = $_POST;
header('Location: '.$_SERVER['PHP_SELF'].'#attachments');
die();
}
// Alles löschen
elseif(isset($_POST['clear']))
{
session_destroy();
header('Location: '.$_SERVER['PHP_SELF']);
die();
}
// Email verschicken
elseif(isset($_POST['submit']))
{
// Ein Boundary erstellen
$mailBoundary = uniqid(time());
// Die Mail Header erstellen
$mailHeader = 'From: webmailer@'.$_SERVER['HTTP_HOST']."\n".
'MIME-version: 1.0'."\n".
'Content-type: multipart/mixed; '.
'boundary="'.$mailBoundary.'"'."\n";
// Den Mailbody zusammenfassen
$mailData =
'This is a multi-part message in MIME format.'."\n".
'--'.$mailBoundary."\n".
'Content-Type: text/plain; charset=ISO-8859-1'."\n".
'Content-Transfer-Encoding: 8bit'."\n\n".
'Email über Webformular verschickt von: '.$_SERVER['REMOTE_ADDR'].' ('.
gethostbyaddr($_SERVER['REMOTE_ADDR']).')'.
"\n-------------------------------------\n\n".
$_POST['message']."\n".
'--'.$mailBoundary."\n";
// Attachments anfügen
if($_SESSION['attachments'])
foreach($_SESSION['attachments'] as $attachment)
{
$mailData .=
'Content-Type: application/octet-stream;'."\n".
' name="'.$attachment['name'].'"'."\n".
'Content-Transfer-Encoding: base64'."\n".
'Content-Disposition: attachment;'."\n".
' filename="'.$attachment['name'].'"'."\n\n".
$attachment['data']."\n".'--'.$mailBoundary."\n";
}
$mailData = substr($mailData, 0, -2).'--';
// Email verschicken
mail($sendTo, $_POST['subject'], $mailData, $mailHeader);
// Die Session beenden
$mailSize = number_format(round((strlen($mailData) + strlen($mailHeader)) / 1024, 2), 2, ',', '.').' KB';
session_destroy();
unset($_SESSION);
}
// Post zurücksetzen
if(isset($_SESSION['tmpPost']))
{
$_POST = $_SESSION['tmpPost'];
unset($_SESSION['tmpPost']);
}
?>
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
html, body, input, textarea
{
font-family: sans-serif;
font-size: 12px;
}
input[type=text], textarea
{
width: 80%;
color: #444444;
}
li input[name^=delete]
{
border: none;
background-color: #FFFFFF;
margin: 0px;
padding: 0px;
color: #444444;
}
a
{
text-decoration: none;
border-bottom: 1px dashed #518AFF;
color: #000000;
}
textarea
{
height: 300px;
margin-left: 100px;
}
input:focus, textarea:focus
{
color: #000000;
}
h1, h2
{
background-color: #88A9EB;
border-left: 10px solid #518AFF;
padding-left: 20px;
color: #0E2147;
}
h2, form
{
margin-left: 15px;
}
h3
{
border-bottom: 1px solid #518AFF;
border-top: 1px solid #518AFF;
width: 100px;
}
form p
{
margin-left: 15px;
}
form p > label
{
width: 100px;
float: left;
}
input[readonly]
{
color: #777777;
}
br
{
clear: left;
}
form p:last-child
{
margin-left: 0px;
}
body > p, #sending > p
{
margin-left: 15px;
padding-left: 5px;
border-left: 1px solid #518AFF;
}
#sending
{
position: absolute;
left: 0px;
width: 100%;
height: 100%;
background-color: #FFFFFF;
z-index: 42;
display: none;
}
</style>
<title>Email versenden</title>
</head>
<body>
<?php
if(!session_id())
{
?>
<h1>Email versenden</h1>
<p>
Die Email wurde erfolgreich an <em><?=$sendTo_Htmlized?></em> versandt.<br/>
Sie hat eine Größe von <?=$mailSize?>.
</p>
<p>
<a href="<?=$_SERVER['PHP_SELF']?>">Zurück</a>
</p>
</body>
</html>
<?php
die();
}
?> <h1>Email versenden</h1>
<div id="sending">
<p>
Die Seite wird aktualisiert. Hierzu müssen viele Daten (Attachments..) zum Server,
bzw. zum Emailaccount gesendet werden.<br/><br/>
Daher kann dieser Vorgang mitunter mehrere Minuten andauern.<br/><br/>
Bitte habe einen Moment Geduld..
</p>
</div>
<p>
Mit Hilfe dieses Scripts können Emails an <em><?=$sendTo_Htmlized?></em>
verschickt werden. IP und Userinformationen werden übermittelt, jedwedige Nutzung
dieses Services für Spam, Viren, etc. wird dem für die IP zuständigem Provider
mitgeteilt und durch diesen entsprechend geahndet.
</p>
<h2>Email</h2>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>" enctype="multipart/form-data"
onsubmit="document.getElementById('sending').style.display='block';
window.scrollTo(0, 0);">
<h3>Daten</h3>
<p>
<label for="to">An</label>
<input size="70" type="text" name="to" id="to" value="<?=$sendTo_Htmlized?>" readonly="readonly"/><br/>
<label for="subject">Betreff</label>
<input size="70" type="text" name="subject" id="subject" value="<?=htmlspecialchars($_POST['subject'])?>" /><br/>
</p>
<h3><label for="message">Text</label></h3>
<p>
<textarea rows="20" cols="70" name="message" id="message"><?=htmlspecialchars($_POST['message'])?></textarea><br/>
</p>
<h3 id="attachments">Attachments</h3>
<ol><?php
if($_SESSION['attachments'])
foreach($_SESSION['attachments'] as $attachment)
echo("\n ".
'<li><input type="submit" name="deleteAttachment['.$id.']" value="Löschen" /> <em>'.$attachment['name'].'</em> ('.
(number_format(round($attachment['size'] / 1024, 2), 2, ',', '.')).' KB) '.
'</li>');
?>
<li style="list-style-type: circle">
<label for="attachment">Attachment anfügen</label><br/>
<input type="file" name="attachment" id="attachment" />
<input type="submit" name="addAttachment" value="Attachment anfügen" />
</li>
</ol>
<p>
<input type="submit" name="submit" value="Abschicken" />
<input type="submit" name="clear" value="Zurücksetzen" />
</p>
</form>
</body>
</html>