de klant krijgt geen email bericht...en blijft leeg

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Karel websmoker

Karel websmoker

17/05/2016 01:24:46
Quote Anchor link
Ik vrees dat ik iets fout doe, maar geen idee wat.
Ik krijg netjes alle info als je op verzenden klikt, maar de bezoeker ontvangt niets ( of helemaal leeg)
iemand een idee?



dit is het script:

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
// datum laatste wijziging: 9 juli 2012
// Invoer uit het contactformulier

$name        = strip_tags($_POST['name']);
$email        = strip_tags($_POST['email']);
$message    = strip_tags($_POST['msg']);
// datum$jaar = date("Y");
$maand = date("m");
$dag = date("d");
$datum = $dag . " " . $maand . " " . $jaar;
$tijd = time();

// emailadres waar de berichten heen moeten
// hier moet je dus je eigen emailadres neerzetten!

    $mijnadres = "[email protected]";

// de naam van je website
// hier moet je dus de naam van je eigen website neerzetten!

    $mijnsite = "www.cargowebshippers.no";

// ongewenste emaildomeinen in een array:
$xmail = array("@cepk.info", "ceprk.info", "@gawab.com", "@mail.ru", "@yandex.com", "@gates.com");
$xmaildomein = "";

function
is_substr($needle, $haystack){
        $pos = strpos($haystack, $needle);
 
        if ($pos === false) {
                return false;
        }
else {
                return true;
        }
}


    // Fouten en veiligheidscontroles
    if ( ( !$email ) ||
         (
strlen($_POST['email']) > 200 ) ||
         ( !
preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) )
       )
    {

        print "Fout: Ongeldig E-Mail Adres";
        exit;
    }

    
    // ongewenste emaildomeinen filteren
    foreach ($xmail as $xmaildomein) {
        if ( is_substr($xmaildomein,$email))
        {

            print "Fout: Ongewenst E-Mail Adres";
            exit;
        }    
    }

    
    // filteren op http om de overlast van spambots te verminderen
    if ( is_substr("http",$message))
    {

        print "Fout: Gebruik geen http in je bericht";
        exit;
    }
    

    if ( ( !$name ) ||
         (
strlen($name) > 100 ) ||
         (
preg_match("/[:=@\<\>]/", $name) )
       )
    {

        print "Fout: Ongeldige Naam";
        exit;
    }

    if ( preg_match("#cc:#i", $message, $matches) )
    {

        print "Fout: Ongeldig Header Field Gevonden";
        exit;
    }

    if ( !$message )
    {

        print "Fout: Geen Bericht";
        exit;
    }

    
    if (mb_eregi("\r",$email) || mb_eregi("\n",$email)){
        print "Fout: Ongeldig E-Mail Adres";
        exit;
    }

    
    // E-mail opstellen
    $headers    = "Content-Type: text/plain; charset=iso-8859-1\n";
    $headers    .= "Van: $name <$email>\n";
    $recipient    = $mijnadres;
    $subject    = "Bericht via $mijnsite $datum $tijd";
    $mssg = "=== AFZENDER ========\n";
    $mssg .= "$name <$email>\n";
    $mssg .= "=== BEGIN BERICHT ======\n\n";
    $mssg .= "$message\n\n";
    $mssg .= "=== EINDE BERICHT ======\n";
    $message = $mssg;
    
    // E-mail verzenden
    mail($recipient, $subject, $message, $headers);

    // Doorsturen naar dank-je-wel-pagina
    header("location: http://www.cargowebshippers.no/contents/en-uk/thankyou.html");
?>

===================
en het html deeltje
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
<!doctype html>
<html xmlns:sf lang="en-uk" dir="ltr" >
<head>
<STYLE>
body {
background-color: #FFFFFF;
color: #999399;
}
</STYLE>
<CENTER>
<!--?php echo $jaar; ?--></H1>
<FORM method=post name=form action=verwerking.php>
<BR>&nbsp;<BR><B>Bestellings cofirmation</B><BR>&nbsp;<BR>
<LABEL>Name:<BR><INPUT maxLength=200 size=40 name=name></LABEL><BR>&nbsp;<BR><LABEL> e-mail:<BR>
<INPUT maxLength=100 size=40 name=email></LABEL><BR>&nbsp;<BR><LABEL>Ordernumber:<BR>
(Gebruik geen "http" in je bericht)<BR><TEXTAREA rows=6 cols=40 name=msg></TEXTAREA></LABEL><BR>&nbsp;<BR><INPUT class=pointer type=submit value=Send name=Submit><BR>&nbsp;<BR></FORM>
<!-- einde formulier --></CENTER>


Edit:
Script tussen code-tags gezet voor betere leesbaarheid. Gelieve dit voortaan zelf te doen. Zie ook het tags-overzicht in de 'Veelgestelde Vragen' van de site.
Gewijzigd op 17/05/2016 11:48:04 door - Ariën -
 
PHP hulp

PHP hulp

13/05/2024 15:15:30
 
Ward van der Put
Moderator

Ward van der Put

17/05/2016 07:37:02
Quote Anchor link
Je hebt het e-mailadres van de klant opgeslagen in $email:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$email = strip_tags($_POST['email']);


maar je mailt naar het adres in $recipient:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mail($recipient, $subject, $message, $headers);


Dan komt de mail dus nooit aan bij $email.

Verder schort er nogal wat aan het script. Er bestaat bijvoorbeeld geen e-mailheader "Van":

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$headers .= "Van: $name <$email>\n";
 
- Ariën  -
Beheerder

- Ariën -

17/05/2016 08:34:01
Quote Anchor link
Dat is dan de 'From' header.
Gewijzigd op 17/05/2016 09:12:36 door - Ariën -
 
Ivo P

Ivo P

17/05/2016 09:44:32
Quote Anchor link
!preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email)

Waarom niet gewoon de filter_var() functie gebruiken en dan php's eigen filter gebruiken?
Hoewel jouw regex al flink wat opvangt, zal het misgaan zodra er een ö of ander niet accentloze letter, dan wel een niet westers teken gebruikt wordt.
 
Karel websmoker

Karel websmoker

17/05/2016 10:46:25
Quote Anchor link
dank voor de respons.
Ik ben niet zo goed in php en was al blij dat ik dit kon...lol
ik krijg keurig mijn emails binnen, vandaar dat ik dacht: ben al aardig op weg.

mail($recipient, $subject, $message, $headers, $email);
Heb hier email in toegevoegd....maar komt ook dan niet aan
 
Ivo P

Ivo P

17/05/2016 11:16:43
Quote Anchor link
http://php.net/mail

de functie mail() verwacht als eerste parameter een string met het mailadres dat de mail moet gaan ontvangen. Simpelweg als 5e parameter een adres toevoegen, zal niet gaan.
 
Karel websmoker

Karel websmoker

17/05/2016 11:34:55
Quote Anchor link
de functies zoals ik in het scriptje heb staan, werkt aan mijn kant wel goed.
de functie mail() is toch de mail die ik zelf op mijn email adres ontvang? en niet de kopie van de klant ?
 
Ivo P

Ivo P

17/05/2016 11:41:15
Quote Anchor link
mail() is een functie.

$email bevat het mailadres uit het formulier

$recepient bevat een hardcoded adres (van jou)

De mail wordt gestuurd aan $receipient

in de headers staat: $headers .= "Van: $name <$email>\n";

als je van Van From maakt zal de mail schijnbaar afkomstig zijn van het mailadres dat in formulier stond ingevuld.

Er is geen reden waarom er ook een mail aan $email gestuurd zou worden.

Hooguit als je een CC header opneemt en daarin $email zet.
 
Karel websmoker

Karel websmoker

17/05/2016 12:30:20
Quote Anchor link
Ik heb nu deze er ingezet...mag dit zo?
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
<?php
// E-mail opstellen
    $headers    = "Content-Type: text/plain; charset=iso-8859-1\n";
    $headers    .= "From: $name <$email>\n";

        $headers .= 'Cc: $email\r\n';

    $recipient    = $mijnadres;
    $subject    = "Bericht via $mijnsite $datum $tijd";
    $mssg = "=== AFZENDER ========\n";
    $mssg .= "$name <$email>\n";
    $mssg .= "=== BEGIN BERICHT ======\n\n";
    $mssg .= "$message\n\n";
    $mssg .= "=== EINDE BERICHT ======\n";
    $message = $mssg;
    
    // E-mail verzenden
    mail($recipient, $subject, $message, $headers);
?>


Edit:
Script tussen code-tags gezet voor betere leesbaarheid. Gelieve dit voortaan zelf te doen. Zie ook het tags-overzicht in de 'Veelgestelde Vragen' van de site.
Gewijzigd op 17/05/2016 12:31:41 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

17/05/2016 12:37:54
Quote Anchor link
Ik zou als mailadres in de From-header liever een algemeen mailadres van je site gebruiken.
In de Reply-To header kan je het mailadres gebruiker van de verzender.

De beste opzet van de mailheaders vind je hier: http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders
 
Artur Kupczak

Artur Kupczak

18/05/2016 09:26:23
Quote Anchor link
Php zelf heeft slechte Mail functie. Daarom adveseer ik library 'Mailer' gaan gebruiken.
 
- Ariën  -
Beheerder

- Ariën -

18/05/2016 09:29:41
Quote Anchor link
@Artur De functie is niet geheel slecht, maar er missen een hoop functionele zaken. Ik hoop dat ze dit in de toekomst met een nieuwe class (net als DateTime) zullen uitbreiden. Ikzelf prefereer zelf phpMailer als library.
 



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.