Nu dacht ik dat ik er helemaal was ... maar kom ik toch ineens een vervelende fout tegen.

Stel iemand vult in het contactformulier een naam met vreemde tekens in, bijv. Jö d'n Hertóg met mailadres [email protected]

Vervolgens maak ik daar dan van "Jö d'n Hertóg <[email protected]>".
Echter, in de Reply-To zorgt dit voor allerlei vage tekentjes: Jö d'n Hertóg

Wat is de juiste manier om "Jö d'n Hertog" op te schonen zodat er geen vreemde tekens ontstaan? Ik had al filter_var geprobeerd waardoor de vreemde tekens in html-code werden omgezet, maar dat werkte niet goed. Ik vermoed dat ik alle vreemde tekens eruit moet filteren. Klopt dat, en zo ja, welke functie kan ik daar het best voor gebruiken?
Mogelijk hoef je het niet op te schonen. Subjects kun je encoden, mogelijk werkt dit ook op de namen in reply-to etc. Iets als:
<?php
$name = 'Jö d\'n Hertóg';
$encoded = '=?UTF-8?B?' . base64_encode($name) . '?=';
?>
Thanks wederom :-)

Dit lijkt te werken!!! :-))))))

Als ik nu op bericht antwoorden klik dan zie ik staan "Jö d'n Hertóg" <[email protected]>". Dat lijkt dus prima!

Als ik in de berichtbron kijk dan staat er:

Reply-To: =?UTF-8?B?SsO2IGQnbiBIZXJ0w7Nn?= <[email protected]>

De naam is dus inderdaad geëncodeerd. Gaat dit dan wel gewoon goed met het beantwoorden?
Dat gaat gewoon goed, het coderen is deel van de standaard. Je kunt uiteraard ook quoted printable voor het coderen gebruiken, zoals veel clients doen:
<?php
$name = 'Jö d\'n Hertóg';
$encoded = '=?UTF-8?Q?' . quoted_printable_encode($name) . '?=';
?>

Zoals je ziet is de vorm als volgt:
=?charset?encoding?data?=.
Voor encoding kan Q worden gebruikt voor quoted-printable en B voor base64.
Ah zo ... ik snap 'm. Duidelijke uitleg. Dan zal ik er quoted printable van maken omdat de rest dat ook is ... wel zo netjes. Thanks! :-)

Reageren