12 listopada 2009
Wysyłanie maila w utf8 - rozwiązanie
Rozwiązanie dotyczy zadania numer 5 z tego posta. A więc zaczynamy. Najpierw trzeba dodać treść maila.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
Witaj drogi Użytkowniku!<br />
<br />
Właśnie zarejestrowałeś się w najlepszej grze na świecie typu MMORPG! Gratuluje słusznego wyboru.<br />
Dane które podałeś to :<br />
<table>
<tr>
<td>Login</td>
<td>'.$_POST['login'].'</td>
</tr>
<tr>
<td>Mail</td>
<td>'.$_POST['mail'].'</td>
</tr>
<tr>
<td>Login</td>
<td>'.$_POST['login'].'</td>
</tr>
<tr>
<td>Imię</td>
<td>'.$_POST['imie'].'</td>
</tr>
<tr>
<td>Nazwisko</td>
<td>'.$_POST['nazwisko'].'</td>
</tr>
<tr>
<td>Imię Twojej postaci</td>
<td>'.$_POST['imie_postaci'].'</td>
</tr>
</table>
</body>
</html>
';
Jak widać - nic specjalnego. Zwykły html obrazujący dane, które wysłaliśmy za pomocą formularz. Warto zauważyć, że cały html jest kodowany w utf-8. Następnie dodajemy tytuł oraz pola dodatkowe.
$dodatkowo.="MIME-Version: 1.0\r\n";
$dodatkowo.="Content-type: text/html; charset=utf-8\r\n";
$temat = 'Potwierdzenie rejestracji w najlepszej grze MMORPG';
$temat = "=?UTF-8?B?".base64_encode($temat)."?=";
$dodatkowo = strtr($dodatkowo, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");
$zam2 = strtr($zam2, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");
if (mail($_POST['mail'], $temat, $tresc, $dodatkowo))
echo 'Mail został wysłany';
else
echo 'Nie udało się wysłać maila';
W zmiennych dodatkowych ustawiamy między innymi pole from (oraz inne nagłówki). W każdym pierwszym kursie znajduję się opis jak ustawiać nagłówki i co konkretnie znaczą. Ja tego robić nie będę. Nie wgłębiałem się w to - zawsze kopiuję kod, który jest sprawdzony i dostępny za darmo w sieci. Nie widzę powodu, dla którego mam to pamiętać albo opisywać. Parę następnych linijek odpowiada za odpowiednie polskie krzaczki. Normalnie nie trzeba tego robić, ale ja preferuje pisanie w utf-8 - a co za tym idzie trochę trzeba się pobawić z mailem. Po kliknięciu na funkcję pokaże się wam manual z opisem tej funkcji. Ogólnie odpowiadają one za zmianę znaków.
Jednocześnie chciałbym przypomnieć, że nie powinno się robić czegość takiego:
, ponieważ nie wiadomo co wpisał użytkownik. Zakładam, że to jest kod uzupełniający do poprzednich rozwiązań i że te zmienne zostały sprawdzone, więc nic nie powinno się stać. Dzisiaj tak w miarę krótko, ale do końca tygodnia pokaże się kolejna lekcja, więc podglądajcie bloga.
Jakieś pytania?

