Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Funkcja mail - problem z kodowaniem
tomekpl
post 3.01.2012, 17:59:00
Post #1





Grupa: Zarejestrowani
Postów: 134
Pomógł: 5
Dołączył: 9.08.2008
Skąd: Szczecin

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


Witam, mam problem z kodowaniem polskich znaków ani iso ani utf nie działa, wywala krzaki na meilu.

1.
  1. $email_from = $email;
  2. $email_subject = "Strona: ".stripslashes($subject);
  3. $email_message = "Wiadomosc napisana przez: '".stripslashes($name);
  4. $email_message .="' dnia ".date("d/m/Y")." o godzinie ".date("H:i")."\n\n";
  5. $email_message .= stripslashes($body);
  6. $headers = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";
  7. $headers .= 'From: '.$email_from."\r\n" .
  8. 'Reply-To: '.$email_from."\r\n" .
  9. 'X-Mailer: PHP/' . phpversion();
  10.  
  11. mail($email_it_to, '=?UTF-8?B?'.base64_encode($email_subject).'?=', $email_message,$headers);


2.

  1. $adresat = $email_it_to; // pod ten adres zostanie wysłana // wiadomosc
  2. $email = $_POST['email'];
  3. $content = $_POST['body'];
  4. $header = "From: ".$email." \nContent-Type:".
  5. ' text/plain;charset=utf-8'.
  6. "\nContent-Transfer-Encoding: 8bit";
  7. if (mail($adresat, $subject, $content, $header))
  8. echo '<p>działa</p>';
  9. else
  10. echo '<p><b>NIE</b> wysłano maila!</p>';


1 i 2 oczywiscie wysyła maila, ale kodowania polskich znaków jest zrypane, jeszcze mam coś takiego:
  1. function mail_escape_header($subject){
  2. $subject = preg_replace('/([^a-z ])/ie', 'sprintf("=%02x",ord(StripSlashes("\1")))', $subject);
  3. $subject = str_replace(' ', '_', $subject);
  4. return "=?utf-8?Q?$subject?=";
  5. }

także nie działa.

Wina jest w zakodowaniu skryptu czy z serverem z którego jest wysyłana wiadomość ?

Go to the top of the page
+Quote Post
JustHuman4
post 3.01.2012, 18:08:53
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 2
Dołączył: 10.12.2011
Skąd: Stumilowy Las

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


No nie wiem, ja to robię tak i starcza tongue.gif

  1. $do= ($mail);
  2. $temat="trolololo";
  3. $tresc="Witaj $nick ";
  4. $od="From: anonim ";
  5. $pl = "MIME-Version: 1.0\r\n";
  6. $pl = "Content-type: text/html; charset=utf-8\r\n";
  7.  
  8. mail($do,$temat,$tresc,$od,$pl);


A jeśli to nie problem z kodem, wydaje mi się że może być to też związane z e-mailem nadawcy maila.
Pozdrawiam

Ten post edytował JustHuman4 3.01.2012, 19:37:22
Go to the top of the page
+Quote Post
tomekpl
post 3.01.2012, 18:22:28
Post #3





Grupa: Zarejestrowani
Postów: 134
Pomógł: 5
Dołączył: 9.08.2008
Skąd: Szczecin

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


Twój sposób działa owszem, ale ja potrzebuje funkcję mail do formularza kontaktowego, gdzie ktoś będzie wypełniał pole treść.


Bo jak wpiszemy ręcznie do funkcji mail temat i treść to będzie wyświetlać się normalnie na meilu, natomiast wpisana treść do formularza kontaktowego, później przesłana do funkcji mail wyświetla sie z krzakami..
Go to the top of the page
+Quote Post
JustHuman4
post 3.01.2012, 19:42:58
Post #4





Grupa: Zarejestrowani
Postów: 63
Pomógł: 2
Dołączył: 10.12.2011
Skąd: Stumilowy Las

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


To nie ma nic raczej do siebie. Tak samo jest w formularzu kontaktowym i w normalnym auto. mailu
Może w <head> masz zapisane ISO a w ustawieniach maila UTF-8 albo na odwrót?

Pozdrawiam
Go to the top of the page
+Quote Post
Bartłomiej Skwar...
post 3.01.2012, 20:00:21
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 9
Dołączył: 2.01.2012

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


Skoro treść wpisana ręcznie jest OK, a przesłana z formularza nie - to coś nie gra na linii form <-> php.
Poza kodowaniem określonym w sekcji HEAD, dodatkowo określ kodowanie znaków formularza.
  1. <form action="..." accept-charset="UTF-8">
Go to the top of the page
+Quote Post
tomekpl
post 3.01.2012, 21:24:38
Post #6





Grupa: Zarejestrowani
Postów: 134
Pomógł: 5
Dołączył: 9.08.2008
Skąd: Szczecin

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


to samo z tym formularzem, może dlatego że to forma ajax i dlatego nie łapie?

skrypt jest tutaj: http://www.freecontactform.com/ajax_form.php
Go to the top of the page
+Quote Post
Bartłomiej Skwar...
post 3.01.2012, 21:33:44
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 9
Dołączył: 2.01.2012

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


Dziwna sprawa... przecież UTF-8 jest domyślnym kodowaniem w Ajaxie. Może w pliku js zamień
Kod
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

na
Kod
http.setRequestHeader('Content-Type', 'text/plain'; charset:UTF-8");
Go to the top of the page
+Quote Post
tomekpl
post 3.01.2012, 21:40:53
Post #8





Grupa: Zarejestrowani
Postów: 134
Pomógł: 5
Dołączył: 9.08.2008
Skąd: Szczecin

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


zmeiniłem na to, ale daje to samo
Kod
http.setRequestHeader('Content-Type', 'text/plain;charset:UTF-8');


Ten post edytował tomekpl 3.01.2012, 21:42:41
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: 21.06.2025 - 23:23