Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]mail() - problem z kodowaniem przy użyciu iconv()
Savage.Mephisto
post 1.12.2009, 09:19:11
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 11
Dołączył: 24.01.2008

Ostrzeżenie: (0%)
-----


Mam frustrujący problem z kodowaniem polskich znaków w treści maila, który jest generowany automatycznie i wysyłany przy użyciu funkcji mail().
Treść maila jest ucinana, gdy tylko pojawi się w niej znak w innym kodowaniu niż utf-8.
Zauważyłem, że Firefox 3.3.x ma czasem problemy z kodowaniem utf-8 i bez ingerencji użytkownika przestawia się na windows-1250.
Klient w sklepie internetowym wybiera przykładowo kolor ubrania i w miejscu polskich znaków pojawia się zamiast "żółty" zonk w stylu "żó?�ty". Po złożeniu zamówienia kolor w takiej formie jest zapisywany do bazy danych.
Zarówno baza danych, jak i kodowanie na stronie jest w utf-8. Treść maila jest przekodowywana w locie z utf-8 na iso-8859-2.

Fragment kodu:

  1. $tytuliso = iconv("UTF-8", "ISO-8859-2", $tytul);
  2. $tytuliso = "=?iso-8859-2?B?".base64_encode($tytuliso)."?=";
  3. $tresciso = iconv("UTF-8", "ISO-8859-2", $tresc);
  4. mail($email, $tytuliso, $tresciso, "From: $zam_header <$zam_email>\r\n"."Content-Type: text/plain; CharSet=ISO-8859-2; format=flowed");



Panowie, macie jakiś pomysł na rozwiązanie powyższego problemu?
Dodam, że nie występuje on za każdym razem.

Ten post edytował Savage.Mephisto 1.12.2009, 09:31:09


--------------------
Myślisz, że przeżyjesz swoje życie w blasku i chwale...
Lecz jest coś, co zmieni ci cały świat...
Szczerość!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Danielcom
post 4.12.2009, 19:09:58
Post #2





Grupa: Zarejestrowani
Postów: 92
Pomógł: 3
Dołączył: 6.10.2008

Ostrzeżenie: (0%)
-----


Też miałem podobny problem, który rozwiązałem tak:

Nagłówki
  1. $naglowki = "Reply-to: $adresat <$adresat>\r\n";
  2. $naglowki .= "From: mail@mail.pl <mail@mail.pl>\r\n";
  3. $naglowki .= "MIME-Version: 1.0\r\n";
  4. $naglowki .= "Content-type: text/html; charset=iso-8859-2\r\n";
  5.  


Zmiana kodowania
  1. $temat = iconv("UTF-8","ISO-8859-2",$temat);
  2. $wiadomosc = iconv("UTF-8","ISO-8859-2",$wiadomosc);


wp, onet, interia, o2 - akceptują taką formę smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 03:37