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.

$tresc='
<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="From: Kurs PHP <no-replay@kurs-php.pl>\r\n";
$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:

mail($_POST['mail'], $temat, $tresc, $dodatkowo);

, 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?

Szkielet gry - rozwiązania

To czas na rozwiązania. Pierwszą rzeczą, którą chce wam pokazać, to szkielet strony. Wygląda on mniej więcej tak:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" href="style.css" type="text/css">
    </head>
    <body>
        <div id="contener">
            <div id="naglowek"></div>
            <div id="menu"></div>
            <div id="tresc"></div>
            <div id="stopka"></div>
        </div>
    </body>
</html>

Czytaj dalej