contact form mail handler

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Nicky de maeyer

nicky de maeyer

26/09/2016 12:50:05
Quote Anchor link
hey,

Ik heb deze mail handler ongeveer 2 jaar geleden geschreven. Nu alles werkte toen perfect. Nu pas ik mijn code aan voor de mail afhandelaar te gebruiken voor een andere website waar ik aan het werk ben. Nu ik vul alles in op het contact form en hij geeft geen fouten ofzo hij zegt dqt het verzonden is. maar heb hem ingesteld op mijn email adres en krijg gewoon niets binnen. al gezocht maar vind zelf geen fouten. Mss iemand die me hier kan helpen.

contact form
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<form action="verwerking.php" method="post">
                <div>
                <label for="name">Naam:</label>
                <input type="text" id="name" name="name" />
                </div>
                <div>
                <label for="mail">E-mail:</label>
                <input type="e-mail" id="e-mail" name="e-mail" />
                </div>
                <div>
                <label for="msg">Bericht:</label>
                <textarea id="msg" name="msg"></textarea>
                </div>
    
                <div class="button">
                <button type="submit">Send your message</button>
                </div>
                </form>

en de php:
<?php  
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (empty($_POST['name'])) {
        $error .= "naam is niet ingevuld<BR />";
    }
   if (empty($_POST['e-mail'])) {
        $error .= "e-mail is niet ingevuld<BR />";  
    }
if (filter_var($_POST['e-mail'], FILTER_VALIDATE_EMAIL)) {
          echo '';
    }
else {
          $error .= "Geen geldig email adres<BR />";
    }
if (empty($_POST['msg'])) {
        $error .= "Uw vraag of opmerking is niet ingevuld<BR />";
    }

    
    if (empty($error)) {

        $bericht  .= "Mijn naam is: ". $_POST['name'].
                     "
                     Mijn email is: "
.$_POST['e-mail'].
                     "
                     mijn vraag of opmerking is: "
.$_POST['msg'];
      
       mail("[email protected]", "reactie van de website", $bericht, "FROM: website naam");
       echo "Uw aanvraag is verstuurd. We zullen u zo snel mogelijk contacteren."; header('Refresh: 3; url=contact.html');
          
    }
else {
    
        echo "Gelieve alle gegevens correct in te vullen.<BR/><BR />";
        echo "<FONT COLOR=\"#FF0000\">".$error."</FONT>";
        
    }
    
}
else {
    
    echo "Formulier niet verstuurd. Gelieve alle gegevens correct in te vullen.";

}

?>

ik weet niet echt waar de fout zit.
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 26/09/2016 12:52:09 door - Ariën -
 
PHP hulp

PHP hulp

28/03/2024 12:55:01
 
- Ariën  -
Beheerder

- Ariën -

26/09/2016 12:56:05
Quote Anchor link
Gebruik de juiste mailheaders:
http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders

En bouw ook foutafhanding in op je mail-functie. Als je foutmeldingen uit hebt staan, dan zien gebruikers altijd de melding dat het verstuurd is, zonder dat PHP er wat over kan zeggen.

Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if(mail(....)) {
    echo "Uw aanvraag is verstuurd. We zullen u zo snel mogelijk contacteren.";
    header('Refresh: 3; url=contact.html');
}
else {
    echo "De mail is niet verstuurd vanwege een technische fout.";
}

        
?>


En even los van je probleem: <FONT> is al behoorlijk verouderd. Gebruik liever CSS om je tekst te stylen.
Gewijzigd op 26/09/2016 14:00:56 door - Ariën -
 
- SanThe -

- SanThe -

26/09/2016 12:59:30
Quote Anchor link
@- Ariën -: Vergeet het if()je niet.
 
Ivo P

Ivo P

26/09/2016 13:52:29
Quote Anchor link
- moet er bij FROM geen mailadres staan?

- ik zou bij regel 37/41 de functie htmlspecialchars() gebruiken.
Dat voorkomt dat iemand een stukje html/script opneemt in zijn bericht.
 
Adoptive Solution

Adoptive Solution

26/09/2016 14:48:08
Quote Anchor link
Ik heb er dit van gemaakt :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$mail_ontv = "[email protected]";
$subject = "Reactie van de website";
$headers = "From: " . $_POST['name'] . " <" . $_POST['e-mail'] . ">";
$bericht = "Mijn naam is: " . $_POST['name'] . "\n";
$bericht .= "Mijn email is: " . $_POST['e-mail'] . "\n";
$bericht .= "Mijn vraag of opmerking is: " . $_POST['msg'] . "\n";

mail($mail_ontv, $subject , $bericht, $headers);
 
- Ariën  -
Beheerder

- Ariën -

26/09/2016 14:53:09
Quote Anchor link
Okee, en wat zijn de bevindingen?

Let wel op header-injection. Iemand kan je headers eenvoudig manipulueren via je formulier en eventueel spam versturen. En pas foutafhandeling toe op je mail() functie.
 
Ivo P

Ivo P

26/09/2016 15:11:20
Quote Anchor link
Als je nu [email protected] invult in het vakje Email, dan verstuurt jouw server dus een mail die afkomstig zou zijn van Obama.

De ontvangende mailserver zou daar zomaar zijn vraagtekens bij kunnen plaatsen. Immers, jouw server staat vast niet te boek als een legitieme afzender van mails van dat domein.

Begin eerst eens om daar info@jouwdomain in te vullen. En check of jouw dns settings zodanig zijn dat jouw server ook mail van dat domein zou moeten mogen versturen.

Daarna zou je nog kunnen kijken of je ook nog een andere afzender bij ReplyTo kunt invullen.
Bedenk dat er een verschil is tussen "mail wordt niet verstuurd" en "ik zie de mail niet aankomen".

Zeker partijen als Hotmail en Gmail hebben vrij strikte regels om spam tegen te gaan.
 
- Ariën  -
Beheerder

- Ariën -

26/09/2016 15:21:44
Quote Anchor link
Daarom gebruik ik liever PHPmailer of een andere kant en klare package om te mailen. Die hebben alle mailheaders en veiligheden al aan boord.
 
Ivo P

Ivo P

26/09/2016 15:37:17
Quote Anchor link
maar ook PHPmailer etc. kunnen niet controleren of het opgegeven mailadres mag versturen via de aangegeven server.

In principe komt de mail van (FROM) jouw server / jouw domain.

Daarnaast is er de ReplyTo optie, waarbij aangegeven wordt aan wie een antwoord gestuurd moet worden:

Eerste link die ik zo 123 vond via Google die dit aanstipt. Er is vast ook duidelijker uitleg te vinden:
http://serverfault.com/questions/398981/should-one-use-from-reply-to-or-both-headers-to-reflect-their-clients-emai
 
- Ariën  -
Beheerder

- Ariën -

26/09/2016 15:43:55
Quote Anchor link
Ivo P op 26/09/2016 15:37:17:
maar ook PHPmailer etc. kunnen niet controleren of het opgegeven mailadres mag versturen via de aangegeven server.

True, maar het voorkomt wel dat iemand headers aan past om er vervolgens mee te spammen.
 
Nicky de maeyer

nicky de maeyer

27/09/2016 13:45:45
Quote Anchor link
@Adoptive Solution ik heb jou oplossing geprobeerd maar neen.Ik krijg maar geen emails binnen. Vind dit heel raar.

@arien ja ik weet dat <font> al oud is. dit wordt nog aangepast ;) is ondertussen al een tijdje geleden geschreven :D


@iedereen kan het zijn dat er ergens een fout zit waardoor de ingegeven tekst niet wordt opgenomen in de php ofzo. Ik gok maar wat veel ervaring met php heb ik nog niet. maar ben wel aan het bijleren :D
Gewijzigd op 27/09/2016 13:48:56 door nicky de maeyer
 
- Ariën  -
Beheerder

- Ariën -

27/09/2016 13:51:53
Quote Anchor link
Heb je al mijn link gevolgd over de 'juiste headers'?
 
Nicky de maeyer

nicky de maeyer

27/09/2016 14:07:59
Quote Anchor link
Ja Ariën heb Adoptive Solution's $header aangepast zoals de link die je me gegeven hebt.

Toevoeging op 27/09/2016 14:20:33:

en Ariën heb juist de foutafhandeling toegepast. ik krijg geen fouten. gewoon dat de email is verstuurd.

Toevoeging op 27/09/2016 14:24:08:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php  
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (empty($_POST['name'])) {
        $error .= "naam is niet ingevuld<BR />";
    }
   if (empty($_POST['e-mail'])) {
        $error .= "e-mail is niet ingevuld<BR />";  
    }
if (filter_var($_POST['e-mail'], FILTER_VALIDATE_EMAIL)) {
          echo '';
    }
else {
          $error .= "Geen geldig email adres<BR />";
    }
if (empty($_POST['msg'])) {
        $error .= "Uw vraag of opmerking is niet ingevuld<BR />";
    }

    
    if (empty($error)) {

                    
       $mail_ontv = "[email protected]";
       $website_name="th-design";
        $subject = "Reactie van de website";
        $headers = 'From: ' . $website_name . ' <' . $mail_ontv . '>'  . "\r\n";
        $bericht = "Mijn naam is: " . $_POST['name'] . "\n";
        $bericht .= "Mijn email is: " . $_POST['e-mail'] . "\n";
        $bericht .= "Mijn vraag of opmerking is: " . $_POST['msg'] . "\n";

        if(mail($mail_ontv, $subject , $bericht, $headers)) {
    echo "Uw aanvraag is verstuurd. We zullen u zo snel mogelijk contacteren.";
    header('Refresh: 3; url=contact.html');
   }
else {
    echo "De mail is niet verstuurd vanwege een technische fout.";
}
  
    }

     else {
    
        echo "Gelieve alle gegevens correct in te vullen.<BR/><BR />";
        echo "<FONT COLOR=\"#FF0000\">".$error."</FONT>";
        
    }
    
}
else {
    
    echo "Formulier niet verstuurd. Gelieve alle gegevens correct in te vullen.";

}

?>
Gewijzigd op 27/09/2016 14:26:02 door nicky de maeyer
 
- SanThe -

- SanThe -

27/09/2016 14:24:22
Quote Anchor link
De From in de reactie van Adoptive Solution is niet correct.

Laat het stukje script met de headers zoals je nu hebt hier eens zien.
En staat de server vanwaar je de mail wilt sturen in het SPF record in de DNS?
 
Nicky de maeyer

nicky de maeyer

27/09/2016 14:26:40
Quote Anchor link
heb ze hierboven nog eens de gehele php code gepost ;)
 
- SanThe -

- SanThe -

27/09/2016 14:28:19
Quote Anchor link
In de From staat nu een adres van hotmail.com en het is vast geen server van hotmail.com.
Zet hier een adres in die van de server/het domein zelf komt.

Toevoeging op 27/09/2016 14:29:27:

En waar is de rest van de headers?
 
Nicky de maeyer

nicky de maeyer

27/09/2016 14:29:56
Quote Anchor link
oke zal ik proberen ;)
ik zal de headers bijvullen ;)
Gewijzigd op 27/09/2016 14:30:38 door nicky de maeyer
 
- SanThe -

- SanThe -

27/09/2016 14:31:16
Quote Anchor link
Test het ook eens zonder headers, dus zonder 4e parameter.
 
Nicky de maeyer

nicky de maeyer

27/09/2016 14:43:55
Quote Anchor link
heb het getest niets ik krijg altijd dat de email verstuurd is. En aan de server denk ik ook ni dat het ligt ik gebruik zowel een betalende .be als gratis webhosting. dus begrijp het echt niet meer :D
 
Ivo P

Ivo P

27/09/2016 14:56:22
Quote Anchor link
heb je het ook met een andere ontvangende server dan hotmail.com geprobeerd?
 
- SanThe -

- SanThe -

27/09/2016 14:56:57
Quote Anchor link
Staat de server niet ergens op een blacklist?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.