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?

Odpowiedzi: 4 do tego wpisu.

  1. Damian's Gravatar

    Autor: Damian dnia 12.11.09 o godz. 22:00

    Wszystko fajnie, a czy mógłbyś mi powiedzieć, jak skonfigurować lokalny serwer SMTP w KrasnalServ? Wygląda to tak: http://img190.imageshack.us/img190/7355/86730148.png

    A może skorzystać z jakiegoś osobnego programu do konfiguracji lokalnego SMTP? Jeżeli tak, to jakiego i jak to zrobić?

  2. misiuziu's Gravatar

    Autor: misiuziu dnia 12.11.09 o godz. 22:00

    Trochę mnie nie było w związku z przeprowadzką mojej osoby. Z tego co zacząłem czytać na temat skonfigurowanie wysyłania maili z lokalnego komputera dowiedziałem się następującej rzeczy - szkoda zachodu. Przynajmniej dla mnie. Hosting można wykupić już od 50zł rocznie, co nie jest nie wiadomo jak dużym kosztem.

    Nigdy nie zagłębiałem się w tematykę wysyłania maili z lokalnego komputera i teraz tez tego nie zrobię. Najzwyczajniej w świecie mi się nie chce.

  3. Kamil's Gravatar

    Autor: Kamil dnia 12.11.09 o godz. 22:00

    Czy to wszystko co pisałes trzeba robic na stronie kturo zrobiłem za stronie http://www.dbv.pl ??

  4. misiuziu's Gravatar

    Autor: misiuziu dnia 12.11.09 o godz. 22:00

    Ogólnie to tak. Dla Ciebie proponuję jednak na początek słownik ortograficzny.

    Jeśli postawiłeś stronę z gotowego CMSa to nie musisz się (prawdopodobnie) tym martwić.

Dodaj swój komentarz