9 $_REQUEST['login'] = $User->login;
10 $_REQUEST['email'] = $_REQUEST['email'] ?: $User->email;
13 unset($_REQUEST['login']);
15 $error = mailform($_REQUEST, $Page->place);
17 print "<p class=warn>$error</p>\n\n";
20 function mailform($input = [], $config = [])
22 $source = $config['subject'] ??
23 (empty($input['subject']) ? 'reactie' : $input['subject']);
24 $domain = preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']);
25 $rcpt = $config['rcpt'] ?? "info@$domain";
26 $subject = "Formulier {$_SERVER['HTTP_HOST']}: $source";
29 return 'Geen gegevens ontvangen. Probeer het nog eens.';
34 if (empty($input['login'])) {
35 return "Inloggen is verplicht om een melding te plaatsen.";
37 if (empty($input['body'])) {
38 return "Geen bericht opgegeven.";
42 if (empty($input['naam']) or empty($input['huis'])) {
43 return 'De bedoeling is juist dat je opgeeft wie er komt.';
47 if (empty($input['email']) or !preg_match('/.+@.+\..+/', $input['email'])) {
48 return 'Een geldig e-mailadres is verplicht zodat we antwoord kunnen geven.';
50 if (isset($input['naam']) and empty($input['naam'])) {
51 return 'Geef ook een naam waarmee we u kunnen aanspreken.';
55 $reply = preg_match('/\A[^\s\'@]{1,64}@[.a-zA-Z0-9-]{4,63}\z/', @$input['email'])
56 ? $input['email'] : "noreply@$domain";
57 if ($displayname = @$input['naam']) {
58 $reply = sprintf('"%s" <%s>', addcslashes($displayname, "\\\"\0..\37"), $reply);
60 $header = "From: $reply";
62 if ($origin = @$_SERVER['REMOTE_ADDR']) {
63 if ($resolved = @gethostbyaddr($origin) and $resolved !== $origin) {
64 $origin .= sprintf(' (%s)', gethostbyaddr($origin));
66 $header .= "\r\nReceived: from $origin by $domain{$config['url']}; ".date('r');
70 'X-Accept-Language' => 'HTTP_ACCEPT_LANGUAGE',
71 'User-Agent' => 'HTTP_USER_AGENT',
72 ) as $mailhdr => $serverhdr) {
73 if (empty($_SERVER[$serverhdr])) continue;
74 $header .= "\r\n$mailhdr: ".$_SERVER[$serverhdr];
78 foreach ($input as $k => $v) {
79 $body .= "$k: $v\r\n";
82 if ($logfile = fopen('maillog.txt', 'a')) {
83 $logdata = "Date: ".strftime("%F %T");
84 $logdata .= "\nTo: $rcpt\nSubject: $subject\n$header\n\n$body.\n\n";
85 fwrite($logfile, str_replace("\r\n", "\n", $logdata));
88 $sent = mail($rcpt, $subject, $body, $header);
90 return 'Helaas ging er iets mis bij het doorvoeren. Probeer het later nog eens.';
94 print '<p>Bedankt voor uw bestelling. U ontvangt z.s.m. de bevestiging van deze bestelling via uw opgegeven e-mailadres.</p>';
97 print "<p>Bedankt voor je deelname. Tot ziens!</p>";
100 print "<p>Bedankt voor de melding. Na goedkeuring zal het hier geplaatst worden.</p>";
103 print '<p>Bedankt voor uw reactie!</p>';