Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja mail - problem z kodowaniem
Forum PHP.pl > Forum > Przedszkole
tomekpl
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ść ?

JustHuman4
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
tomekpl
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..
JustHuman4
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
Bartłomiej Skwara
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">
tomekpl
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
Bartłomiej Skwara
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");
tomekpl
zmeiniłem na to, ale daje to samo
Kod
http.setRequestHeader('Content-Type', 'text/plain;charset:UTF-8');
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.