PHP mail functie
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)
1
2
3
4
5
6
7
8
9
10
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 = "[email protected]";
mail($to,$subject,$message,$headers);
?>
$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 = "[email protected]";
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
Haal de spatie eens weg voor de \r\n in deze regel:
@Rob,
Dit heb ik geprobeerd maar maak helaas geen verschil.
Het gekke is als ik zonder variabelen werk het wel goed gaat
echo je $headers eens voor de grap.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$mail = '<[email protected]>';
$name = "yoeri";
$from = $name.$mail;
echo $from;
?>
$mail = '<[email protected]>';
$name = "yoeri";
$from = $name.$mail;
echo $from;
?>
Als ik een spatie ertussen doe geeft hij wel een output met het mailadres
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$mail = '< [email protected]>';
$name = "yoeri";
$from = $name.$mail;
echo $from;
?>
$mail = '< [email protected]>';
$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)
1
2
3
4
5
6
2
3
4
5
6
<?php
$firstname ='yoeri';
$emailaddress ='[email protected]';
$headers = 'From: ' . $firstname . ' <' . $emailaddress . '>' . "\r\n";
echo $headers;
?>
$firstname ='yoeri';
$emailaddress ='[email protected]';
$headers = 'From: ' . $firstname . ' <' . $emailaddress . '>' . "\r\n";
echo $headers;
?>
Kijk in de paginabron en je ziet dat het er staat.
Met echoën komt hij inderdaad in de broncode terecht als
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$firstname ='yoeri';
$emailaddress ='[email protected]';
$headers = 'From: ' . $firstname . ' <' . $emailaddress . '>' . "\r\n";
echo $headers;
?>
$firstname ='yoeri';
$emailaddress ='[email protected]';
$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.
Over welke PHP-versie praten we?
Bij mij doet ie het gewoon. Maar ik zie nog een "extra" spatie (die niet in je "zonder variabelen" variant staat):
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 - 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)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
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