Piszę różne skrypty w PHP. Jedną z częściej używanych funkcji jest funkcja mail, która wysyła maila. Często moje skrypty pobierają dane, przetwarzają i wysyłają emaila. Niestety, ale czasami w emailach są podwójne entery co niezbyt estetycznie wygląda. W tym artykule opiszę jak temu zaradzić.

Data dodania: 2007-05-20

Wyświetleń: 6622

Przedrukowań: 0

Głosy dodatnie: 0

Głosy ujemne: 1

WIEDZA

-1 Ocena

Licencja: Creative Commons

Piszę różne skrypty w PHP. Jedną z częściej używanych funkcji jest funkcja mail, która wysyła maila. Często moje skrypty pobierają dane, przetwarzają i wysyłają emaila. Niestety, ale pod Outlook Express przykładowy mail wygląda tak:

Cześć
Mam dla Ciebie ważną informację:

a pod operą ten sam email wygląda tak:

Cześć

Mam dla Ciebie ważną informację

Pojawia się pytanie: dlaczego użytkownicy M2 (program pocztowy wbudowany w przeglądarkę internetową Opera) dostają maile z "podwójnymi" enterami? Odpowiedź jest prosta, ale długo szukałem rozwiązania. Problem tkwi w kodzie PHP, używam mniej więcej takiej konstrukcji:

$tresc="Czesc
Mam dla Ciebie wazna informacje";
mail($adresat,$temat,$tresc,$od);

Konstrukcja jest jak najbardziej OK. Zwróć uwagę, że zmienna $tresc zajmuje 2 linijki (jest to wygodny sposób zapisywania długich zmiennych z enterami). Problem właśnie tutaj tkwi. Otóż plik utworzyłem pod Windowsem a serwery na których mam strony są pod Linuxami. Pod windowsem kod ASCII entera to #13,#10 (CR LF) a pod linuxem to samo #10 (LF). No i zmienna tresc zawiera w miejsce enterów zamiast #10 aż 2 znaki: #13 #10 i Outlook Express to interpretuje jako 1 normalny enter a Opera traktuje taką sekwencję znaków jako dwa entery (!). Dlatego tworząc pliki PHP zadbaj, aby koniec wiersza zawierał sam znak #10. Program, w którym pisuje skrypty PHP (EditPad) ma opcję zapisywania plików tekstowych w formacie Linuxowym, wystarczy z menu Convert wybrać opcję To Linux i od teraz już zawsze ten plik będzie miał entery zapisywane w postaci kodu ASCII #10 (LF). Jak ponownie otworzysz ten plik w programie EditPad to on sam zorientuje się, że koniec wiersza to kod ASCII #10 i nie trzeba już będzie pamiętać o konwersji. No a maile czytane pod Operą w końcu nie będą miały podwójnych enterów
Licencja: Creative Commons
-1 Ocena