PHP mail functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yoeri Achterbergen

Yoeri Achterbergen

27/09/2018 20:05:40
Quote Anchor link
Goede avond,


Ik zit met 2 dingen waar ik niet uit kom en hoop dat iemand mij kan helpen.
Ik maak gebruik van de mail functie en die ziet er zo uit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
            $headers
.= 'From:  ' . $firstname . ' <' . $emailaddress .'>' . " \r\n";
            $headers .= "MIME-Version: 1.0" . "\r\n";
            $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
            $message = 'Voornaam: '.$firstname. '<br> Achternaam: '.$lastname.'<br> E-mailadres: '.$emailaddress;        
            $subject = "hier gaat het over";
            $to = "mijn@mailadres.com";
            mail($to,$subject,$message,$headers);

?>


- Ik krijg het niet voor elkaar om zowel de naam als emailadres in de From header te stoppen.
- Ik krijg elke email 2x ik weet niet of dat te maken heeft met de fout in de From header?

De mail functie word geactiveerd d.m.v. een button
Gewijzigd op 27/09/2018 20:06:55 door Yoeri Achterbergen
 
PHP hulp

PHP hulp

11/07/2020 00:19:01
 
Rob Doemaarwat

Rob Doemaarwat

27/09/2018 21:25:39
Quote Anchor link
Haal de spatie eens weg voor de \r\n in deze regel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$headers .= 'From:  ' . $firstname . ' <' . $emailaddress .'>' . " \r\n";
                                                                  ^
                                                deze dus weghalen |
 
Yoeri Achterbergen

Yoeri Achterbergen

28/09/2018 00:14:21
Quote Anchor link
Het versturen van de dubbele mail is opgelost, dit lag niet aan het script maar aan de browser waarmee het werd verstuurd.

@Rob,
Dit heb ik geprobeerd maar maak helaas geen verschil.
Het gekke is als ik zonder variabelen werk het wel goed gaat

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$headers
.= 'From: Yoeri <yoeri@yoeri.com>' . "\r\n";
?>
 
- Ariën -
Beheerder

- Ariën -

28/09/2018 00:55:59
Quote Anchor link
echo je $headers eens voor de grap.
 
- SanThe -

- SanThe -

28/09/2018 01:01:03
 
Yoeri Achterbergen

Yoeri Achterbergen

28/09/2018 01:02:58
Quote Anchor link
Heb een test gedaan en het blijkt dat het mis gaat met de < symbolen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$mail
= '<yoeri@yoeri.com>';
$name = "yoeri";
$from         =  $name.$mail;
echo $from;
?>


Als ik een spatie ertussen doe geeft hij wel een output met het mailadres
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$mail
= '< yoeri@yoeri.com>';
$name = "yoeri";
$from         =  $name.$mail;
echo $from;
?>


Toevoeging op 28/09/2018 01:09:41:

@santhe,

Ook deze site heb ik al bekeken en geprobeerd, maar als ik de header echo zoal Ariën zegt krijg ik alleen mij voornaam en geen emailadres

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$firstname
='yoeri';
$emailaddress ='test@test.com';
$headers     = 'From: ' . $firstname . ' <' . $emailaddress . '>' . "\r\n";
echo $headers;
?>
 
- SanThe -

- SanThe -

28/09/2018 01:19:48
Quote Anchor link
Kijk in de paginabron en je ziet dat het er staat.
 
Yoeri Achterbergen

Yoeri Achterbergen

28/09/2018 10:23:11
Quote Anchor link
@Santhe,

Met echoën komt hij inderdaad in de broncode terecht als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<test@test.com></test@test.com>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$firstname
='yoeri';
$emailaddress ='test@test.com';
$headers     = 'From: ' . $firstname . ' <' . $emailaddress . '>' . "\r\n";
echo $headers;
?>


Ik krijg hem dan niet binnen met naam en dan het emailadres maar enkel alleen het emailadres met bovenstaande code.
Als ik een vaste tekst in de header zet dus zonder variabelen gaat het wel goed. En met dat probleem / issue zit ik dus.
 
- Ariën -
Beheerder

- Ariën -

28/09/2018 10:25:40
Quote Anchor link
Over welke PHP-versie praten we?
 
Rob Doemaarwat

Rob Doemaarwat

28/09/2018 10:39:39
Quote Anchor link
Bij mij doet ie het gewoon. Maar ik zie nog een "extra" spatie (die niet in je "zonder variabelen" variant staat):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$headers .= 'From:  ' . $firstname . ' <' . $emailaddress .'>' . " \r\n";
                   ^                                              ^
                   | deze ook weghalen          deze dus weghalen |
 
Yoeri Achterbergen

Yoeri Achterbergen

28/09/2018 11:16:58
Quote Anchor link
@Ariën,

De versie wat nu bij de hosting draait is 5.6.38

@Rob,

Deze spatie heb ik ook weg gehaald maar maakt helaas geen verschil:(
 
- Ariën -
Beheerder

- Ariën -

28/09/2018 11:49:39
Quote Anchor link
Vreemd, ik denk dat je hosting iets vaags draait, wat in de weg zit?

Probeer anders eens phpMailer.
Gewijzigd op 28/09/2018 11:50:06 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

28/09/2018 13:10:47
Quote Anchor link
- Ariën - op 28/09/2018 00:55:59:
echo je $headers eens voor de grap.

Echo de output van je mail eens voor de gein inderdaad.

Yoeri Achterbergen op 28/09/2018 01:02:58:
Heb een test gedaan en het blijkt dat het mis gaat met de < symbolen.

Sorry, maar als het hier al misgaat, zou je je dan moeten bezighouden met het handmatig bouwen van MIME-mail?

Als je bedoelt dat < informatie tussen punthaken > niet wordt weergegeven in een HTML-context dan is dat niet zo verwonderlijk? Maak een functie waarmee je data kunt dumpen en een die zich bedient van output escaping. Ook het niet veilig dumpen van data kan zorgen voor potentiële veiligheidslekken, bijvoorbeeld doordat je gewoon lappen JavaScript aan het uitdraaien en uitvoeren bent...

Om je toch wat op weg te helpen (maar dit is waarschijnlijk equivalent aan het uitdelen van handgranaat):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// voor output escaping in de HTML-context
function escape($in) {
    return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}

// voor het veilig(er) dumpen van arbitraire data in de HTML-context
function dump($in) {
    if (is_array($in)) {
        $in = print_r($in, true);
    }

    echo '<pre>'.escape($in).'</pre>';
}

?>

En anders is het misschien inderdaad verstandiger om een library zoals phpMailer te gebruiken...
Gewijzigd op 28/09/2018 13:11:46 door Thomas van den Heuvel
 



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.