Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] Krzaki w temacie wysyłanej wiadomości
Forum PHP.pl > Forum > Przedszkole
lee2
Witam,

mam formularz do wysyłania maila - modyfikowany do moich potrzeb smile.gif
Formularz wysyła ładnie maila na wskazany adres. Treść wiadomości jest bez zarzutu, są polskie znaki itd. Formularz testowałam na gmailu, interii, i wp, jednak docelowo wiadomości będą odbierane w systemie zimbra. Jeżeli wysyłam maila z tego formularza to robi krzaki w tytule wiadomości tutaj odpowiada za to header. Natomiast jeżeli maila o takim samym tytule i treści wysyłam z innej skrzynki - wszystko jest ok.

Testowałam rozwiązania proponowane na tym forum ad. funkcji mail() ale to nic nie dało. Czy ktoś może wie gdzie szukać rozwiązania lub jak ono powinno wyglądać?

poniżej kod strony:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. <div id="content">
  9. <?php
  10. // sprawdzamy, czy zmienna $submit jest pusta
  11. if (empty($_POST['submit'])) {
  12. // wyświetlamy formularz
  13. echo "
  14. <form method=\"post\">
  15. <table width=\"564\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  16. <tr>
  17. <td width=\"209\">Imię i nazwisko<br />
  18. <input name=\"imie_i_nazwisko\" type=\"text\" size=\"30\" />
  19. <br /></td>
  20. <td width=\"355\" rowspan=\"5\" align=\"left\" valign=\"top\" ></td>
  21. </tr>
  22. <tr>
  23. <td>Adres e-mail<br />
  24. <input name=\"email\" type=\"text\" size=\"30\" />
  25. <br /></td>
  26. </tr>
  27.  
  28. <tr>
  29. <td>Tytuł wiadomości<br />
  30. <input name=\"tytul_wiadomosci\" type=\"text\" size=\"30\" />
  31. <br /></td>
  32. </tr>
  33. <tr>
  34. <td colspan=\"2\">Treść wiadomości<br />
  35. <textarea name=\"tresc_wiadomosci\" cols=\"67\" rows=\"5\"></textarea>
  36. <br /></td>
  37. </tr>
  38. </table>
  39.  
  40. <input name=\"submit\" type=\"submit\" value=\"Wyślij\" />
  41. <input value=\"Wyczyść pola\" type=\"reset\" />
  42. </form>";
  43. }
  44. // sprawdzamy, czy zmienne przesłane z formularza nie są puste imie_i_nazwisko, email, indeks, grupa_dziekanska, tytul_wiadomosci, tresc_wiadomosci
  45. elseif (!empty($_POST['imie_i_nazwisko']) && !empty($_POST['email']) && !empty($_POST['tytul_wiadomosci']) && !empty($_POST['tresc_wiadomosci'])) {
  46. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  47. // zmienna $message zawiera treść wiadomości
  48. $message = "Wysłał: $_POST[imie_i_nazwisko]\ne-mail: $_POST[email]\n\nProblem dotyczy: $_POST[tytul_wiadomosci]\n\nOpis problemu:\n$_POST[tresc_wiadomosci]\n";
  49. // zmienna $header zawiera przede wszystkim adres zwrotny
  50.  
  51.  
  52. $header = "From: $_POST[imie_i_nazwisko] <$_POST[email]>";
  53. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  54. @mail("imie@serwer.pl","Gość zgłasza problem lub pytanie","$message","$header")
  55. or die('Nie udało się wysłać wiadomości');
  56. // wyświetlenie komunikatu w przypadku powodzenia
  57. echo "<br/><br/><br/><br/><div align=\"center\"><strong><font color=\"#690\">Wiadomość została wysłana poprawnie!</font></strong></div>";
  58. }
  59. // lub w przypadku nie wypełnienia formularza do końca
  60. else echo "<span style=\"color: #FF0000; text-align: center;\">Proszę wypełnić wszystkie pola formularza!</span><br/><hr>";
  61.  
  62. ?>
  63. </div>
  64. </body>
  65. </html>


pozdrawiam i dziękuję za pomoc!

Witam,

podbijam temat, i chcę jednocześnie zapytać czy z tym kodem jest wszystko ok. czy ktoś może np. przetestować...

Pozdrawiam
kalmaceta
rozumiem że utf 8, brakuje header'a o kodowaniu po pierwsze, poza tym można odpowiednio zapisać temat:

  1. $subject = '=?UTF-8?B?'.base64_encode($subject).'?=';


albo użyj sobie funkcji:

  1. function mail_utf8($to, $subject = '(No subject)', $message = '', $header = '') {
  2. $header_ = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";
  3. mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header_ . $header);
  4. }
misiek172
wystarczy użyć w odpowiedni sposób http://pl2.php.net/manual/en/function.mb-e...-mimeheader.php
lee2
po modyfikacji zadziałało w takiej konfiguracji:

  1.  
  2. // zmienna $header zawiera przede wszystkim adres zwrotny
  3. $_POST[imie_i_nazwisko] = "=?UTF-8?B?".base64_encode($_POST[imie_i_nazwisko])."?=";
  4. $header = "From: $_POST[imie_i_nazwisko] <$_POST[email]>";
  5.  
  6.  
  7. $temat = "$_POST[imie_i_nazwisko]";
  8. $temat .= "=?UTF-8?B?".base64_encode(" - temacik")."?=";
  9.  
  10. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  11. @mail("mail@domena.pl","$temat","$message","$header")
  12. or die('Nie udało się wysłać wiadomości');
  13.  


może tak być?
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.