Formmail, problem med æ ø å, charset=UTF-8
Jeg har læst en masse indlæg om samme type problem uden dog at kunne finde løsningen, så her kommer endnu et spørgsmål i genren.Jeg skal bruge en formail på en php-side, som er gemt i formatet UTF-8 uden BOM, og i head har jeg:
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
Problemet er at æ ø og å vises forkert i de genererede mails, både når bogstaverne indgår i afsendes navn, emne og selve teksten.
Hvad mangler jeg for at få vist bogstaverne korrekt?
Formen ser sådan ud:
<form method="post" action="sender.php">
<label for="t1">Dit navn:</label><br />
<input class="form-input" id="t1" type="text" size="20" name="name"/><br /><br />
<label for="t2">Din e-mail-adresse:</label><br />
<input class="form-input" id="t2" type="text" size="20" name="email" /><br /><br />
<label for="t3">Emne:</label><br />
<input class="form-input" id="t3" type="text" size="20" name="emne" /><br /><br />
<!-- næste input skjules med css for almindelige brugere, kun spambotter ser (og udfylder sandsynligvis) feltet -->
<span id="ikkese"><label for="t7">Subject:</label>
<input id="t7" type="text" name="subject" /></span>
<label for="t4">Besked:</label><br />
<textarea class="besked-input" id="t4" name="besked" rows="10" cols="49"></textarea><br />
<label for="t5">Ønsker du kopi af mailen?</label>
<input id="t5" type="checkbox" name="customer_copy" value="ON" />
<label for="t6"> </label><input id="t6" type="submit" name="submit" value=" Send " />
</form>
Den tilhørende sender.php ser sådan ud:
<?php
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) && // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['emne']) && // tjek, at der er skrevet et emne
!empty($_POST['besked']) && // tjek, at der er skrevet en besked
// her følger sikringen mod spambotter
!strpos($_POST['name'], "mit_domaene.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "mit_domaene.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) && // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) && // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email'])) // tjek, at der ikke er "linjeskift" i "email"
// er alt ok, fortsættes med afsendelse af mailen
{
$headers="From: ".$_POST['name']."<".$_POST['email'].">";
if (@$_POST['customer_copy'])
{
$headers .= "\r\nBcc: ".$_POST['email'];
}
$body .= "Den " . date("d/m y") . " kl. " . date("G:i") . " skrev " . $_POST['name'] . ":\r\n\r\n" . $_POST['besked'];
if (@mail("info@mit_domaene.dk", strip_tags($_POST['emne']),
stripslashes(strip_tags($body)), $headers))
{
echo "<p class=\"besked\">Beskeden er sendt.</p>";
}
else
{
echo "<p class=\"besked\">E-mailen kunne ikke sendes. Mail-adressen er forkert udfyldt. Du mangler sandsynligvis @.</p>";
}
}
else
{
echo "<p class=\"besked\">Mailen kunne ikke sendes. Alle felter skal udfyldes.</p>";
}
}
?>