Polskie znaki w formularzu kontaktowym - mail()


(Loto 92) #1

Witam,

przetrząsnąłem forum w poszukiwaniu odpowiedzi, znalazłem kilka tematów jednak nie pomogły mi one.

Napisałem formularz kontaktowy na stronę i mam jedyny problem. Nie wyświetlają mi się polskie znaki w treści wiadomości.

Kodowanie strony utf-8 i także kodowanie tego formularza ustawione na utf-8 i nie działa jak powinno.

Czy ktoś mógłby pomóc?

elseif((!empty($_POST['imienazwisko'])) && (!empty($_POST['email'])) && (!empty($_POST['wiadomosc'])))

			{


				$header = "Content-Type: text/html; charset=utf-8";

				$wiadomosc = $_POST['wiadomosc'];

				$odbiorca = "mój@email.pl";

				$temat = "=?UTF-8?B?".base64_encode("Tutaj temat wiadomości.")."?=";

				$wiadomosc = nl2br($wiadomosc);


				@mail($odbiorca, $temat, $wiadomosc, $header)

				or die("

Z powodu błędu na stronie, nie udało się wysłać wiadomości. Spróbuj później."); echo "

Wiadomość została wysłana. Dziękuje za kontakt. Postaram się odpowiedzieć jak najszybciej."; } else { echo "

Proszę wypełnić wszystkie pola formularza kontaktowego.

Cofnij…"; }


(Pablo_Wawa) #2
  1. Może Twój program pocztowy, który wyświetla tę wiadomość, nie potrafi poprawnie wyświetlić treści HTML? Możesz ręcznie przełączyć kodowanie wyświetlanej wiadomości?

  2. Czy w formularzu, w kodzie strony HTML go zawierającej, podałeś poprawne kodowanie (UTF-8)?


(Loto 92) #3
  1. Używam Gmaila także myślę, że nie w nim tkwi problem.

  2. Tak, kodowanie jest UTF-8.


(adpawl) #4

daj:

$header = "Mime-Version: 1.0\r\n";

$header .= "Content-type: text/html; charset=utf-8\r\n";

$header .= "Content-Transfer-Encoding: 8bit\r\n";

(Loto 92) #5

Dodałem, jednak bez skutku. Szczerze to próbowałem już różnych sposobów i jak było tak jest.

$header = "Mime-Version: 1.0\r\n";

				$header .= "Content-type: text/html; charset=utf-8\r\n";

				$header .= "Content-Transfer-Encoding: 8bit\r\n";


				$wiadomosc = $_POST['wiadomosc'];

				$odbiorca = "mail@mail.pl";

				$temat = "=?UTF-8?B?".base64_encode("Wiadomość ze strony")."?=";

				$wiadomosc = nl2br($wiadomosc);


				@mail($odbiorca, $temat, $wiadomosc, $header)

(adpawl) #6

A wpisz testowo na sztywno treść wiadomości i sprawdź co będzie …jeżeli będą ogonki, to znaczy że problemem jest to co/jak otrzymujesz z POSTa :wink:


(Pablo_Wawa) #7

(Loto 92) #8

(Pablo_Wawa) #9

Jeśli i mój kod Ci zadziała nieprawidłowo, to albo masz coś skopane w konfiguracji PHP, albo w przeglądarce internetowej (programie pocztowym?) - sprawdź może najpierw w innej przeglądarce.

Skrypt przetestowałem na swojej stronie internetowej (hostowanej w nazwa.pl) - komercyjne rozwiązanie - może domowe rozwiązania mają z tym problem? Mogę wieczorem sprawdzić na lokalnym XAMPP’ie.


(Loto 92) #10

Ok. Problem jest na 100% w konfiguracji WebServ’a i lokalnego serwera SMTP bo wgrałem sobie ten skrypt na serwer i są polskie znaki.

Czyli wszystko działa. Dziękuje za chęć pomocy :slight_smile: Pozdrawiam


(Pablo_Wawa) #11

Cieszę się, że sprawa się wyjaśniła. :slight_smile: