Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Polskie znaki w nagłówkach (funkcja mail)
Forum PHP.pl > Forum > Przedszkole
apollos
Witam,
Mam pytanie odnośnie nagłówków, które można załączyć do funkcji mail. Kod jest następujący:
  1. $headers = 'From: '.$name.' <'.$email.'>' . "\r\n";
  2. $headers .= 'Reply-To: '.$name.' <'.$email.'>' . "\r\n";

Tak więc powinno być w porządku, zaś problem jest następujący: gdy użytkownik w formularzu poda w polu "name" imię i nazwisko bez polskich znaków, wówczas wszystko działa poprawnie. Kłopot pojawia się, gdy w nazwie są polskie znaki, np. Andrzej Przepiórka. Wtedy na mój adres e-mail, którego adresatem jest samo "Andrzej", zaś nazwisko obcina. Jak to rozwiązać? Czy powinno tu być wskazane kodowanie utf-8, a może zrobić dwa osobne pola na imię i nazwisko, zaś potem je połączyć w nagłówku?
Szymciosek
Kodowanie to tak jakby podstawa, spróbuj ustawić na utf-8
apollos
Czyli na samym początku powinienem jeszcze dodać:
  1. $headers = 'Content-type: text/html; charset=utf-8' . "\r\n";

?
Szymciosek
http://php.net/manual/en/function.mail.php

Tutaj masz jak użyć headers w wiadomości Example #4. Podobnie do tego co dałeś.
apollos
Dziwna sprawa. Jak imię ma jakiś ogonek, tak nazwisko już się "nie łapie", czyli na to wygląda, że kończy się po wyrazie z polskim znakiem.
tab
a ogólnie znaki w skrypcie ci poprawnie koduje? mam nadzieje ze nie kodzisz w windowsowym notatniku biggrin.gif
jesli dobrze koduje to pewnie jakis problem z smtp, jakiego uzywasz?
apollos
Cytat(tab @ 14.10.2012, 21:35:59 ) *
a ogólnie znaki w skrypcie ci poprawnie koduje? mam nadzieje ze nie kodzisz w windowsowym notatniku biggrin.gif
jesli dobrze koduje to pewnie jakis problem z smtp, jakiego uzywasz?
Tak, poprawnie. W notepad++. Maila wysyła na utworzone przekierowanie w OVH, które trafia na Gmaila.
bostaf
Cytat(apollos @ 14.10.2012, 21:31:18 ) *
Dziwna sprawa. Jak imię ma jakiś ogonek, tak nazwisko już się "nie łapie", czyli na to wygląda, że kończy się po wyrazie z polskim znakiem.

Nie lubię dawać podpowiedzi nie sprawdziwszy ich wcześniej, ale nie jestem w stanie szybko tego sprawdzić.

Dziwne jest to, że ucina całe nazwisko, a nie na przykład do znaku, albo wywalając jakiś błąd.
Spróbuj wstawić cały $name w cudzysłów:
  1. $headers .= 'Reply-To: "' . $name . '" <' . $email . '>' . "\r\n";

Daj znać, czy to coś pomogło.

Przy okazji i dla pewności: w Notepadzie masz ustawione kodowanie w UTF bez BOM, tak? Domyślnie on ma ANSI.
apollos
UTF-8 bez BOM miałem ustawione. Twoje rozwiązanie zadziałało, a dokładniej te cudzysłowy. Dzięki za pomoc!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.