E-mail formulier met zelf op te geven ontvanger
Afgelopen zomer vakantie kreeg ik het idee om een eigen mail pagina te maken waar ik zelf mails vandaan kan sturen vanaf een vakantie adres, op bijvoorbeeld camping vind je wel eens een PC met internet maar Hotmail en alle andere e-mail sites zijn geblokkeerd. daarom ben ik nu meer dan een halfjaar later me gaan verdiepen in de mail functie. en daar is onderstaan script uitgekomen De dingen die je nog moet aanpassen $titel - De hoofd titel van de pagina, kan ook leegblijven $picdir - de directory waar de plaatjes komen $onderschrift - Het onderschrift, staat nu het IP in Deze dingen staan allemaal BOVEN in het script Wat ga ik nog aan passen: Ik wil nog een UBB parser gaan toevoegen - wil het het script van Jorik voor gebruiken, maar daar ben ik nog niet toegekomen Het probleem verhelpen dat als er geen plaatjes in de map mailpics staan er geen fout meer wordt weergegen. controleren of het E-Mail adres corect is een inlog iets erbij voor de admin zodat hij een lijst met mail adressen ziet staan en nog wat meer zoals een stylesheet maar dat komt later wel weer Als je het script afkraakt vertel dat ook erbij waarom en wat er aan kan aanpassen, het is mijn eerste script hier en ik ben al blij dat het werkt, maar verbetringen zijnaltijd leuk, kan ik ook weer van leren! Dit script is ook terug te vinden op www.batssoft.nl.tt Download het script (met de plaatjes) -> klik hier Veel plezier met het script, Michel Bats P.S. aangezien ik de voorbeeld URL zelf gebruik als mail pagina heb ik adm vervagen voor iets anders, zelf kun je dat ook veranderen zoek alles met adm en vervang het voor iets anders. als admin moet je wel de pagina benaderen met ?adm=true erachter, of false mag ook als er maar iest achter adm staat, of wat je dan ook gekozen hebt
[code]<?php
/************************************************
* E-Mail formulier om e-mail's te zenden met een*
* zelf opgegeven ontvanger adres, ook kun je *
* plaatjes meezenden mits deze op het WWW aan- *
* wezig zijn, ook kun je een map aanmaken waar *
* al plaatjes staan, deze worden door het script*
* opgehaald en weergegeven. *
* *
* Benodigdheden: *
* PHP: getest op: versie 4.3.3 *
* MAIL: je moet een server hebben met mail *
* enabled *
* misschien meer, maar niet dat ik weet *
* *
* mail.php *
* *
* Laat de comment staan!! *
* *
* © BatsSoft 2006 - www.batssoft.nl.tt *
* Gemaakt door Michel Bats aka MBa@NL *
* *
* aanpassingen op dit script zijn terug te *
* vinden op: *
* www.phphulp.nl *
* www.batssoft.nl.tt *
************************************************/
//Stukje config
//De titel van je pagina. Mag ook leegblijven.
$titel = "";
//path waar de e-mail plaatjes staan.
$picdir = "images/mailpics";
//het onderschrift met link naar deze pagina en een opmerking van wie deze mail afkostig is.
$onderschrift = "---------------\n<br>\n<br>\nVerstuur ook gratis E-Mail's, klik <a href=http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"].">hier</a>.\n<br>\n<br>\n<small>De provider van de afzender is: ".gethostbyaddr($_SERVER["REMOTE_ADDR"]).".\n<br>\n<br>\nHet IP van de afzender is: ".$_SERVER["REMOTE_ADDR"].".\n<br>\n<br>\nAls er problemen zijn stuur dan een mail naar de provider.</small>";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?PHP
//controleren wat de pagina naam moet zijn
if (isset($_POST['message'])) {
$strtitel = "E-Mail Verstuurd";
}
Else {
$strtitel = "E-Mail versturen";
}
// cotroleren of $titel is ingevuld, en wat er dan moet worden weergegeven
if (strlen($titel) > 0) {
$strtitelmid = " - ";
}
else {
$strtitelmid = "";
}
?>
<title><?=$titel.$strtitelmid.$strtitel?></title>
</head>
<body>
<?PHP
// controleren of er verzonden moet worden, of dat er nog iets geschreven moet worden (else)
if (isset($_POST['message'])) {
// Het onderwerp van de E-Mail wordt via POST opgehaald
$subject = $_POST['sub'];
// Hier wordt gekeken van wie de mail afkomtsig is
$from = $_POST['from'];
$frommail = $_POST['frommail'];
// Hier wordt gekeken waar de mail heenmoet
$to = $_POST['to'];
$tomail = $_POST['tomail'];
// Hier worden de headers aangemaakt
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "To: " . $to . " <" . $tomail . ">\r\n";
$headers .= "From: " . $from . " <" . $frommail . ">\r\n";
// Hier wordt er gecontroleerd welk plaatje er moet worden meegezonden
// contoleren of er een zelf ingevuld plaatje moet worden meegezonden
if ($_POST['pic']=='eig') {
$message = "<img src=" . $_POST['piceig'] . "><br><br>";
}
// controleren of het plaatje van de server af moet komen
elseif (strlen($_POST['pic']) > 0) {
$message = "<img src=" . $_POST['pic'] . "><br><br>";
}
// of gewoon geen plaatje
else {
$message = "";
}
// Hier word de text opgehaald voor de E-Mail
$message .= nl2br($_POST['message']);
// Hier wordt er gecontroleerd of je een admin bent, zo ja dan wordt er geen onderschrift meegezonden
if (!isset($_GET['adm'])){
$message .= "\n<br>\n<br>\n".$onderschrift;
}
// Hier wordt de mail dan eindelijk verstuurd
mail($tomail, $subject, $message, $headers);
// Nog even een aantal regels te bevesteging, en hoe de mail er bij de onvager uitziet
echo "je E-mail is verstuurd!<br><br>";
echo "Klik <a href=index.php>hier</a> om nog een mail te versturen";
echo "<BR><BR>Hieronder zie je een voorbeeld van hoe de E-Mail op het scherm getoond wordt van de ontvanger.";
echo "<br /><br />";
?>
<hr>
<blockquote>
<B>Van:</B> <?=$from?> [<?=$frommail?>]
<BR>
<B>Verzonden:</B>
<?=date("d-m-Y H:i")?>
<BR>
<B>Aan:</B> <?=$to?> [<?=$tomail?>]
<BR>
<B>Onderwerp:</B> <?=$subject?>
<BR>
<?=$message?>
</blockquote>
<hr>
<?PHP
}
// Hier gaan we een formulier maken waar de gegevens worden ingevuld
else {
// Controleren of je een admin bent, er moet namelijk wel verteld worden dat je een admin bent bij het verzenden
if (isset($_GET['adm'])) {
echo '<form action="?adm=true" method="post" enctype="multipart/form-data" name="mail" target="_self" id="mail">';
}
// de form action voor als adm niet is ingevuld
else {
echo '<form action="" method="post" enctype="multipart/form-data" name="mail" target="_self" id="mail">';
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="left"><p>Afzender: </p>
</td>
<td valign="top" align="left">Naam: </td>
<td valign="top" align="left"><input name="from" type="text" id="from"></td>
</tr>
<tr>
<td valign="top" align="left"> </td>
<td valign="top" align="left">E-Mail: </td>
<td valign="top" align="left"><input name="frommail" type="text" id="frommail"></td>
</tr>
<tr>
<td valign="top" align="left">Ontvanger: </td>
<td valign="top" align="left">Naam: </td>
<td valign="top" align="left"><input name="to" type="text" id="to"></td>
</tr>
<tr>
<td valign="top" align="left"> </td>
<td valign="top" align="left">E-Mail: </td>
<td valign="top" align="left"><input name="tomail" type="text" id="tomail"></td>
</tr>
<tr>
<td valign="top" align="left">Bericht</td>
<td valign="top" align="left">Onderwerp: </td>
<td valign="top" align="left"><input name="sub" type="text" id="sub"></td>
</tr>
<tr>
<td valign="top" align="left"> </td>
<td valign="top" align="left">Typ uw bericht aan de onvanger: </td>
<td valign="top" align="left"><p>
<textarea name="message" cols="50" rows="5" id="message"></textarea>
</p>
</td>
</tr>
<tr>
<td valign="top" align="left"> </td>
<td valign="top" align="left">e.v.t een plaatje<br> (de weergegeven<br> afbeeling(en) is/zijn verkleind,<br>klik op de afbeelding<br> voor ware groote,<br>De ware grote van het<br>plaatje komt in de E-Mail.): </td>
<td valign="top" align="left">
<input name="pic" type="radio" value="" checked>Geen plaatje<br>
<?PHP
// Hier wordt er een map geopend met plaatjes die gebruikt kunnen worden in de E-Mail
$path = pathinfo($_SERVER['SCRIPT_NAME']);
$dir2 = 'http://'.$_SERVER["HTTP_HOST"].$path["dirname"].'/'.$picdir;
$dir = opendir($picdir);
// Haal de gegevens uit dir
while (false !== ($file = readdir($dir))) {
if (($file !== ".") and ($file !== "..")) {
list($filename, $ext) = explode(".", $file);
list($main, $sub, $include) = explode("/", $_SERVER['PHP_SELF']);
if ($ext == "jpg" or $ext == "png" or $ext == "gif") {
echo "<input name=\"pic\" type=\"radio\" value=\"$dir2/$file\"><a href=\"$picdir/$file\" target=\"_blank\"><img src=\"$picdir/$file\" border=\"0\" height=60 width=80></a> - $file<br>\n";
}
}
}
?>
<input name="pic" type="radio" value="eig"><input name="piceig" type="text" id="sub"> <small>Plaats de URL van een plaatje hier.</smal><br>
<blockquote><i>Vergeet niet een balletje te plaatsen voor de goede regel.</i<</blockquote></small>
</td>
</tr>
</table>
<p>
<input type="submit" name="Submit" value="verzend">
<input type="reset" name="Reset" value="legen">
</p>
</form>
<?PHP
// Onderaan de pagina staat ook nog een waarschuwing over het feit dat je IP meegezonden wordt & en het onderschrift maar als je admin bent wordt er niks meegezonden en moet het bericht dus ook niet worden weergegen, want je weet zelf wel hoe het werkt
if (!isset($_GET['adm'])) {
?>
Bedenk wel voor dat je de mail verstuurd dat je ip ook meegezonden wordt, dus als je iemand wil zieken doe dat dan met iets anders!!<br>
En dit is wat er onder aan de E-Mail staat:
<blockquote>
<?=$onderschrift?>
</blockquote>
<?PHP
// Hier wordt de if van het onderschift onderaan de form pagina afgesloten
}
// Hier wordt de if afgesloten die controleerd of er verzonden moet worden of dat er nog een e-mail geschreven moet worden
}
?>[/code]
Reacties
0