PHP Mail

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

John De Zon

John De Zon

15/05/2016 23:12:31
Quote Anchor link
Hallo,
Dit script om een mail te zenden werkt perfect op mijn index page wanneer ik de mail manueel ingeef. Wanneer ik dit doe in mijn formulier, werkt hij niet meer. Ik heb al gecontroleerd of de mail correct was.
Weet iemand hier meer over?
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
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    if ($_POST['resend']) {
        if (trim($_POST['mail2']) == '') {
            $errors[] = 'U moet uw mail ingeven!';
        }


        if (trim($_POST['lastname2']) == '') {
            $errors[] = 'U moet uw naam ingeven!';
        }


        if (trim($_POST['firstname2']) == '') {
            $errors[] = 'U moet uw voornaam ingeven!';
        }


        if (count($errors) == 0) {
            $mail = $_POST['mail2'];
            $lastname = $_POST['lastname2'];
            $firstname = $_POST['firstname2'];
            $sql = "SELECT code FROM users WHERE lastname='" . mysqli_real_escape_string($connection, $_POST['lastname2']) . "' AND firstname='" . mysqli_real_escape_string($connection, $_POST['firstname2']) . "' AND mail='" . mysqli_real_escape_string($connection, $_POST['mail2']) . "' AND activated='0' LIMIT 1";
            $result = mysqli_query($connection, $sql) or die(mysqli_error());
            $randomString = mysqli_fetch_assoc($result);
            $from = "[email protected]";
            $subject = 'DreamShare Account Activation';
            $message = '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>DreamShare</title></head><body style="margin:0px; font-family:Tahoma, Geneva, sans-serif;"><div style="padding:10px; background:#333; font-size:24px; color:#CCC;"><a href="http://www.dreamshare.tk"><img src="http://www.dreamshare.tk/images/connected.png" width="100px" alt="DreamShare" style="border:none; float:left;"></a>DreamShare Account Activation</div><div style="padding:24px; font-size:17px;">Hallo ' . $lastname . ' ' . $firstname . ',<br /><br />Klik op onderstaande link om je account te activeren!<br /><br /><a href="http://www.dreamshare.tk/activation.php?mail=' . $mail . '&code=' . $randomString . '&username=' . $username . '">Kilk hier om je account nu te activeren!</a><br /><br />Na het activeren kan je inloggen met onderstaande gegevens:<br />* Mail: <b>' . $mail . '</b></div></body></html>';
            $headers = "From: $from\n";
            $headers .= "MIME-Version: 1.0\n";
            $headers .= "Content-type: text/html; charset=iso-8859-1\n";
            mail($_POST['mail2'], $subject, $message, $headers);

            $good1 = true;
        }
else {
            $err2 = true;
        }
    }
}

?>
 
PHP hulp

PHP hulp

29/03/2024 00:38:04
 
- Ariën  -
Beheerder

- Ariën -

15/05/2016 23:19:11
Quote Anchor link
Waaruit blijkt dat het niet werkt? Welke ongewenste acties gebeuren er? Wat zie je?
 
John De Zon

John De Zon

15/05/2016 23:19:54
Quote Anchor link
Alles doet het, ik krijg de mail alleen niet aan!
 
- Ariën  -
Beheerder

- Ariën -

15/05/2016 23:27:15
Quote Anchor link
Pas deze headers eens toe:
http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders

Mogelijk werkt het dan wel. Controleer ook eens met print_r() of je $_POST-array klopt.
 
John De Zon

John De Zon

15/05/2016 23:44:31
Quote Anchor link
Dank je! Nu komt de mail wel aan maar nu krijg ik het aan als html-code!
 
- SanThe -

- SanThe -

16/05/2016 00:58:05
Quote Anchor link
Staat dit nog op true?

$html = true;
 
Obelix Idefix

Obelix Idefix

16/05/2016 10:38:57
Quote Anchor link
Waarom geen phpmailer of swiftmailer gebruiken?

Wat me verder opvalt: je maakt nieuwe variabelen aan. Waarom?
Op de ene plek gebruik je vervolgens toch $_POST en verder op de nieuwe. Waarom niet overal $_POST?
Weet je altijd waar het vandaan komt en dat je moet controleren / beveiligen.
 
John De Zon

John De Zon

16/05/2016 13:23:31
Quote Anchor link
Je hebt helemaal gelijk. Dit deed ik gewoon omdat mijn code in het begin slecht was en mijn editor zei dat er fouten waren.
Verder hebben ze al eens tegen mij gezegd dat extra variabelen aanmaken slecht was. Waarom is dit eigenlijk slecht?

Toevoeging op 16/05/2016 13:31:38:

Als ik $html op true zet dan krijg ik de mail ook niet meer aan.
 
Obelix Idefix

Obelix Idefix

16/05/2016 13:48:49
Quote Anchor link
Chris Claes op 16/05/2016 13:23:31:
Verder hebben ze al eens tegen mij gezegd dat extra variabelen aanmaken slecht was. Waarom is dit eigenlijk slecht?

Technisch neemt het ruimte (resources) in.

"Belangrijker" vind ik dat je zinloos bezig bent. Waarom zou je extra regels scripten als die niets extra's opleveren?

Daarbij: door de originele waarde te gebruiken weet je ook waar het vandaan komt ($_POST komt altijd extern, $variabele kan in jouw situatie zowel externe als interne bron hebben). Interne variabelen zijn in principe veilig(er) dan externe input. Daar zul je dus rekening mee moeten houden met o.a. weergeven en opslaan in database en dat is makkelijker als je weet of het wel/niet extern is.
 
Thomas van den Heuvel

Thomas van den Heuvel

16/05/2016 14:18:28
Quote Anchor link
Quote:
Verder hebben ze al eens tegen mij gezegd dat extra variabelen aanmaken slecht was. Waarom is dit eigenlijk slecht?

Als je deze enkel kopieert van A naar B, en vervolgens maar één keer aan B refereert is dit nogal loos. Maar als je vaker refereert aan een variabele met een lange naam dan bereik je op een zeker moment een soort van omslagpunt. Wel zul je je altijd moeten afvragen en realiseren waar (de waarde van) een variabele vandaan komt. De introductie van een nieuwe variabele moet een zekere meerwaarde hebben.

Quote:
Interne variabelen zijn in principe veilig(er) dan externe input.

Hm. Dit gaat alleen op als je een stricte scheidslijn trekt tussen interne en externe (gebruikers)data en alleen als je ervoor zorgt dat je deze data filtert (en mogelijk converteert) als je deze omzet van "extern" naar "intern". Dit gebeurt bijvoorbeeld meestal niet bij data die de database ingaat. Deze wordt doorgaans in een ongewijzigde/rauwe vorm opgeslagen (ook omdat escaping-on-input vaak onpraktisch is).

Het is misschien een betere gewoonte om alle data die niet in het script zelf gedefinieerd wordt, dus ook data die uit een database komt, te beschouwen als extern en er van uit te gaan dat deze onbetrouwbaar is.
 
John De Zon

John De Zon

16/05/2016 14:20:02
Quote Anchor link
Ok dank je! Maar wat met de mail die als html-code aankomt?
 
Obelix Idefix

Obelix Idefix

16/05/2016 14:33:36
Quote Anchor link
Kijk eens naar phpmailer of swiftmailer.
Kans dat het daarmee goed gaat is groter dan zelf lopen stoeien met de mailfunctie van php.
 
Thomas van den Heuvel

Thomas van den Heuvel

16/05/2016 14:37:58
Quote Anchor link
:)

Hangt er maar net vanaf of de reis of de bestemming belangrijker is. Het stoeien met de mailfunctie kan best leerzaam zijn en met het artikel waar Ariën eerder aan refereerde kun je best een eind komen.
 
- SanThe -

- SanThe -

16/05/2016 14:51:18
Quote Anchor link
Thomas van den Heuvel op 16/05/2016 14:37:58:
met het artikel waar Ariën eerder aan refereerde kun je best een eind komen.


Ik gebruik dat altijd en heb nog nooit problemen gehad.
 
- Ariën  -
Beheerder

- Ariën -

16/05/2016 21:33:44
Quote Anchor link
En als het problemen geeft waarbij het in de spambox komt. Dan lijkt het mij verstandig om te kijken of er geen aanknopingspunten in de mailheaders te vinden zijn. Let dan vooral op 'X-Spam' achtige headers. Zo kunnen bijvoorbeeld korte mailtjes met bepaalde steekwoorden (zoals bijv. 'viagra') al snel worden gemarkeerd als spam.

Niettemin raad ik net als Obelix & Idefix aan om PHPmailer of Swiftmailer te gebruiken. Met deze kant-en-klare mail-library kan je met het gebruik van enkele functieaanroepen een mail versturen. Alle juiste ingrediënten voor het versturen van een mail zijn hierin al aanwezig.
 



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.