Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mail] polskie kodowanie w treści maila
Forum PHP.pl > Forum > Przedszkole
ahilles107
Witam.
Jestem w kropce ;/ nie wiem gdzie i jak mam dodac informacje o kodowaniu treści maia wysyłanego funkcją mail.
Dodam że w nagłówku i w polu adresata są polskie znaki ale w treści maila juz nie ;/ POMOCY winksmiley.jpg
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  2. <?php
  3. // sprawdzamy, czy zmienna $submit jest pusta
  4. if (empty($_POST['submit'])) {
  5. // wyświetlamy formularz
  6. echo "<table class=\"kontakt\" border=\"0\"><form method=\"post\">
  7. <tr>
  8. <td>Treść wiadomości</td>
  9. <td><textarea name=\"tresc\" style=\"width: 210px; height: 95px\"></textarea></td>
  10. </tr>
  11. <tr>
  12. <td>Imię i Nazwisko</td>
  13. <td><input type=\"text\" name=\"imie\" style=\"width: 210px\"></td>
  14. </tr>
  15. <tr>
  16. <td>Adres e-mail (twój)</td>
  17. <td><input type=\"text\" name=\"email\" style=\"width: 210px\"></td>
  18. </tr>
  19. <tr>
  20. <td>&nbsp;</td>
  21. </br>
  22. <td><div align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp;&nbsp;
  23. <input type=\"reset\" value=\"Od nowa\"></div></td></form>
  24. </tr>
  25. </table>";
  26. }
  27. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  28. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  29. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  30. // zmienna $message zawiera treść wiadomości
  31. $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
  32. // zmienna $header zawiera przede wszystkim adres zwrotny
  33. $header = "From: $_POST[imie] <$_POST[email]>"; 
  34. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  35. @mail("ahilles107pl@gmail.com","Wiadomosc ze strony WWW","$message","$header")
  36. or die('Nie udało się wysłać wiadomości');
  37. // wyświetlenie komunikatu w przypadku powodzenia 
  38. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  39. }
  40. // lub w przypadku nie wypełnienia formularza do końca
  41. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
  42.  
  43. ?>

mam tyle winksmiley.jpg
DeadMan
Musisz do header dodac jeszcze kodowanie znaków dla maila
  1. <?php
  2. $header .= "Content-transfer-encoding: ISO-8859-2"
  3. ?>
ahilles107
  1. <?php
  2. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  3. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  4. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  5. // zmienna $message zawiera treść wiadomości
  6. $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
  7. $header .= "Content-transfer-encoding: ISO-8859-2";
  8. // zmienna $header zawiera przede wszystkim adres zwrotny
  9. $header = "From: $_POST[imie] <$_POST[email]>";
  10. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  11. @mail("ahilles107pl@gmail.com","Wiadomosc ze strony WWW","$message","$header")
  12. or die('Nie udało się wysłać wiadomości');
  13. // wyświetlenie komunikatu w przypadku powodzenia 
  14. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  15. }
  16. // lub w przypadku nie wypełnienia formularza do końca
  17. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
  18. ?>


tak dałem i niestety nic nie pomogło.
drPayton
Nie pomogło bo nadpisałeś zmienną $header (dodaj kropkę w 9 linii)
ahilles107
  1. <?php
  2. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  3. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  4. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  5. // zmienna $message zawiera treść wiadomości
  6. $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
  7. $header .= "Content-transfer-encoding: ISO-8859-2";
  8. // zmienna $header zawiera przede wszystkim adres zwrotny
  9. . $header = "From: $_POST[imie] <$_POST[email]>";
  10. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  11. @mail("ahilles107pl@gmail.com","Wiadomosc ze strony WWW","$message","$header")
  12. or die('Nie udało się wysłać wiadomości');
  13. // wyświetlenie komunikatu w przypadku powodzenia 
  14. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  15. }
  16. // lub w przypadku nie wypełnienia formularza do końca
  17. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
  18. ?>


tak czy inaczej questionmark.gif bo tak mi albo błą dyświuetla albo nic nie zmienia ;/
DeadMan
takie cos dopisz w 9 lini
  1. <?php
  2. $header .= "From: $_POST[imie] <$_POST[email]>";
  3. ?>

:]
drPayton
Jezu, no pomyśl trochę:
miałeś:
  1. <?php
  2. $header .= "Content-transfer-encoding: ISO-8859-2";
  3. // zmienna $header zawiera przede wszystkim adres zwrotny
  4. $header = "From: $_POST[imie] <$_POST[email]>"; /* W tym miejscu to co poprzednio było w zmiennej $header 
  5. zostaje nadpisane poprzez to co jest tutaj */
  6. ?>


Zrób:
  1. <?php
  2. $header .= "Content-transfer-encoding: ISO-8859-2";
  3. // zmienna $header zawiera przede wszystkim adres zwrotny
  4. $header .= "From: $_POST[imie] <$_POST[email]>";
  5. ?>
ahilles107
tak też dawałem ..
ale nic nie pomaga ;/;/
drPayton
Skupiłem się na błędach składniowych zamiast na merytoryce winksmiley.jpg
  1. <?php
  2. $header .= "Content-type: text/plain; charset=iso-8859-2r\n"; 
  3. $header .= "Content-Transfer-Encoding: 8bitr\n";
  4. ?>

Tak spróbuj
ahilles107
  1. <?php
  2. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  3. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  4. // zmienna $message zawiera treść wiadomości
  5. $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
  6. $header .= "Content-type: text/plain; charset=iso-8859-2r\n"; 
  7. $header .= "Content-Transfer-Encoding: 8bitr\n";
  8. // zmienna $header zawiera przede wszystkim adres zwrotny
  9. $header .= "From: $_POST[imie] <$_POST[email]>";
  10. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  11. @mail("ahilles107pl@gmail.com","Wiadomosc ze strony WWW","$message","$header")
  12. or die('Nie udało się wysłać wiadomości');
  13. // wyświetlenie komunikatu w przypadku powodzenia 
  14. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  15. ?>

tak dałem al na maila i tak dostaje teraz cos takiego:

Content-Transfer-Encoding: 8bit

From: sdg dsfged dfsg gd <[email="%22dsfg%20dstedgdsrt%22@baldur.vel.pl"]"dsfg dstedgdsrt"@baldur.vel.pl[/email]>
Message-Id: <20071105161303.6279814C1793@baldur.vel.pl>
Date: Mon, 5 Nov 2007 17:13:03 +0100 (CET)

Treść wiadomości:
dgdfs dsds fggfd
Wysłał: sdg dsfged dfsg gd
e-mail: dsfg ds ted gdsrt
drPayton
http://forum.php.pl/index.php?showtopic=67026
http://forum.php.pl/index.php?showtopic=49865
Etc

A może zamiast tego co poprzednio napisałem spróbuj:
  1. <?php
  2. $header .= "Content-type: text/html; charset=iso-8859-2r\n"; 
  3. $header .= "Content-Transfer-Encoding: 8bitr\n";
  4. ?>
ahilles107
dzięki bardzo wszystkim winksmiley.jpg
poradziłem sobie...
kolejny raz widzę że mozna na was liczyć winksmiley.jpg
graft
to wstaw jeszcze gotowy kod, może sie kiedyś komuś przyda tongue.gif
ahilles107
  1. <?php
  2. // sprawdzamy, czy zmienna $submit jest pusta
  3. if (empty($_POST['submit'])) {
  4. // wyświetlamy formularz
  5. echo "<table class=\"kontakt\" border=\"0\"><form method=\"post\">
  6. <strong>Formularz Kontaktowy:</strong>
  7. <tr>
  8. <td>Treść wiadomości</td>
  9. <td><textarea name=\"tresc\" style=\"width: 210px; height: 95px\"></textarea></td>
  10. </tr>
  11. <tr>
  12. <td>Imię i Nazwisko</td>
  13. <td><input type=\"text\" name=\"imie\" style=\"width: 210px\"></td>
  14. </tr>
  15. <tr>
  16. <td>Adres e-mail </td>
  17. <td><input type=\"text\" name=\"email\" style=\"width: 210px\"></td>
  18. </tr>
  19. <tr>
  20. <td>Telefon </td>
  21. <td><input type=\"text\" name=\"telefon\" style=\"width: 210px\"></td>
  22. </tr>
  23. <tr>
  24. <td>&nbsp;</td>
  25. </br>
  26. <td><div align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp;&nbsp;
  27. <input type=\"reset\" value=\"Od nowa\"></div></td></form>
  28. </tr>
  29. </table>
  30. <br />
  31. <div align=center><strong>Postaramy się odpowiedzieć jak najszybciej na kazde Państwa pytanie.</strong></div>";
  32. }
  33. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  34. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  35. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  36. // zmienna $message zawiera treść wiadomości
  37.  $msg .= "Imię i Nazwisko: $_POST[imie]\n\n<br><br>";
  38. $msg .= "E-Mail: $_POST[email]\n\n<br><br>";
  39. $msg .= "Telefon: $_POST[telefon]\n\n<br><br>";
  40. $msg .= "Tekst: $_POST[tresc]\n\n<br>";
  41.  
  42.  
  43. $to = "nazwa@domenta";
  44. $subject = "Formularz";
  45.  
  46.  
  47. $mailheaders .= "Nadawca: $_POST[email]";
  48. $mailheaders.= "MIME-Version: 1.0\n";
  49. $mailheaders.= "Content-Type: text/html;\n";
  50. $mailheaders.= "\tcharset=\"UTF-8\"\n";
  51. $mailheaders.= "Content-Transfer-Encoding: 8bit\n\n";
  52.  
  53. mail($to, $subject, $msg, $mailheaders)
  54.  
  55. or die('Nie udało się wysłać wiadomości');
  56. // wyświetlenie komunikatu w przypadku powodzenia 
  57. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  58. }
  59. // lub w przypadku nie wypełnienia formularza do końca
  60. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
  61.  
  62. ?>


Gotowy kod winksmiley.jpg
dudus87
Witam

Użyłem Twojego kodu w formulazy we flash, kod jest nastepujacy:
  1. <?php
  2. $msg .= "Imię i Nazwisko: $_POST[name]\n\n<br><br>";
  3. $msg .= "E-Mail: $_POST[email]\n\n<br><br>";
  4. $msg .= "Telefon: $_POST[tel]\n\n<br><br>";
  5. $msg .= "Tekst: $_POST[message]\n\n<br>";
  6.  
  7.  
  8. $to = "michalprzybysz@flareart.com";
  9. $subject = "Formularz";
  10.  
  11.  
  12. $mailheaders .= "Nadawca: $_POST[email]";
  13. $mailheaders.= "MIME-Version: 1.0\n";
  14. $mailheaders.= "Content-Type: text/html;\n";
  15. $mailheaders.= "\tcharset=\"UTF-8\"\n";
  16. $mailheaders.= "Content-Transfer-Encoding: 8bit\n\n";
  17.  
  18. mail($to, $subject, $msg, $mailheaders)
  19. ?>


Niestety jak tak robie to sa same kwadraty i nic wiecej, nie wiedzie moze co trzeba zmienic w tym aby z flashem wspolpracowalo??
jpatka
Wystarczy, że użyjesz tego samego kodowania dla funkcji mail i dla twojej strony www (we flashu)
-Damian-
Dzieki smile.gif Bardzo mi pomogliście smile.gif
martq
Witam, dołączę się do tematu..
Kod
$imie=$_POST['imie'];
        $nazwisko=$_POST['nazwisko'];
        $email=$_POST['email'];
        $tresc=$_POST['tresc'];
        $adresat = 'mart-q@o2.pl';
        $temat = 'Wiadomość ze strony: [Serwis_krasnah]';
        $zawartosc =  'Dane klienta: '.$imie.' '.$nazwisko."\n".'Adres pocztowy: '.$email."\n\n"."Treść wiadomości: \n".$tresc."\n";
        
        
        $headers = 'From: '.$imie.' '.$nazwisko;
        $headers .= "\nContent-type: text/plain; charset=UTF-8\n" ."Content-Transfer-Encoding: 8bit\n";
        @mail($adresat,$temat,$zawartosc,$headers) or die('<br />Nie udało się wysłać wiadomości!');
        echo 'Wiadomość została wysłana!';

U mnie wszystko wygląda O.K. prócz nagłówka From.. tam mam krzaczki, co lekko mnie irytuje, tzn w przeglądarce jest ok, ale moj ms Outlook wywala krzaczki w nagłówku ;/
Ktoś wie jak naprawić ?;]
erix
A kodowanie formularza, z którego wysyłasz też jest UTF-8?
martq
Formularz jest includowany do szkieletu gdzie mam ustawione utf:
Kod
<?php echo '<?xml version="1.0" encoding="UTF-8"?'.">\n"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"><head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
erix
Kod
Content-Transfer-Encoding: 8bit

Spróbuj użyć innego zapisu znaków. (spróbuj "quoted-printable"; Google)
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.