Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: gmail - formularz kontaktowy i polskie znaki
Forum PHP.pl > Forum > PHP
nieraczek
Zrobiłem formularz kontaktowy, strona z formularzem kontaktowym ma kodowanie UTF-8 i jak wysyłam z tego formularza emaila z polskimi znakami to na stronie internetowej gmail zamiast polskich znaków widzę: źćółżśÃ.
Dlaczego ?
sniezny_wilk
Pokaż kod.
mike
Formularz kodowanie może i mieć UTF-8 ale mail, którego wysyłasz takowego już nie ma i to jest problem.
Podzielam uwagę ~sniezny_wilk, pokaż kod.
Ribery
Mam podobny problem - nie ma polskich znaków - tzn w kliencie pocztowym jest ok - natomiast poczta squaremailu wywali "krzaki"

  1. <div class="newsletter">Formularz kontaktowy:<br /><br /><br />
  2. <?php 
  3. // sprawdzamy, czy zmienna $submit jest pusta 
  4. if (empty($_POST['submit'])) { 
  5. // wyświetlamy formularz 
  6. echo "<table border=\"0\" align=\"left\"><form method=\"post\"
  7. <tr> 
  8. <td>Treść wiadomości</td> 
  9. <td>
  10. <textarea name=\"tresc\" style=\"border: 1px solid silver; width: 250px; height: 130px; \"></textarea>
  11. </td> 
  12. </tr> 
  13. <tr> 
  14. <td>Imię, nazwisko</td> 
  15. <td>
  16. <input type=\"text\" name=\"imie_nazwisko\" style=\"border: 1px solid silver; width: 250px; \" />
  17. </td>
  18. </tr> 
  19. <tr> 
  20. <td>Adres e-mail</td> 
  21. <td><input type=\"text\" name=\"email\" style=\"border: 1px solid silver; width: 250px; \" /></td> 
  22. </tr>
  23. <tr> 
  24. <td>Telefon</td> 
  25. <td><input type=\"text\" name=\"telefon\" style=\"border: 1px solid silver; width: 250px; \" /></td> 
  26. </tr>
  27. <tr> 
  28. <td> </td> 
  29. <td><input type=\"submit\" name=\"submit\" value=\"Wyślij\" style=\"border: 1px solid #FE7B0F; background-color: white; font-size: 9pt;\" />  
  30. <input type=\"reset\" value=\"Wyczyść\" style=\"border: 1px solid #FE7B0F; background-color: white; font-size: 9pt;\" /></td></form> 
  31. </tr> 
  32. </table>"; 
  33. } 
  34. // sprawdzamy, czy zmienne przesłane z formularza nie są puste 
  35.  
  36. elseif (!empty($_POST['tresc']) && !empty($_POST['imie_nazwisko']) && !empty($_POST['email']) && !empty($_POST['telefon'])) { 
  37. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość 
  38. // zmienna $message zawiera treść wiadomości 
  39. $message = "Treść wiadomości:\n$_POST[tresc]\n\nWysłał: $_POST[imie_nazwisko]\ne-mail: $_POST[email]\nTelefon: $_POST[telefon]\n"; 
  40. // zmienna $header zawiera przede wszystkim adres zwrotny 
  41. $header = "From: $_POST[imie_nazwisko] <$_POST[email]>"; 
  42.  
  43. // funkcja mail() za pomocą której wiadomość zostanie wysłana 
  44. @mail("testowy@testowy.com.pl","Wiadomosc ze strony Testowy","$message","$header") 
  45. or die('Nie udało się wysłać wiadomości'); 
  46. // wyświetlenie komunikatu w przypadku powodzenia 
  47. echo "<div align=\"center;\"><strong>Wiadomość została wysłana !</strong></div><br /><a href=\"kontakt.php\">Powrót</a><br /><br /><br />"; 
  48. } 
  49. // lub w przypadku nie wypełnienia formularza do końca 
  50. else echo "<span style=\"color: #FF6200; text-align: center; \"><strong>Wypełnij wszystkie pola formularza!</strong></span><br /><br /><a href=\"kontakt.php\">Powrót</a>";
  51. ?>
barthpl
Miałem podobny problem. Zmodyfikowałem trochę nagłówek maila i działa.
  1. <?php
  2. $from = "$_POST[imie_nazwisko] <$_POST[email]>";
  3. $header = "From: $from\nReply-to: $from\nMIME-Version: 1.0\nContent-type: text/html; charset=UTF-8";
  4. ?>
Ribery
Próbowałem z różnymi opcjami pomogło dopiero dopisanie z iso 88592

  1. <?php
  2. $header = "From: $from\nReply-to: $from\nMIME-Version: 1.0\nContent-type: text/html; charset=iso-8859-2";
  3. ?>
klocu
Bo jeśli chcesz puścić to w UTF-8 to musisz przekodować treść poprzez base64 do kodowania utf-8. W sieci jest gdzieś gotowa funkcja, która obsługuje powyższe kodowanie i działa poprawnie.
barthpl
Cytat(Ribery @ 18.08.2008, 20:28:12 ) *
Próbowałem z różnymi opcjami pomogło dopiero dopisanie z iso 88592

To czy oby na pewno masz kodowanie strony w UTF-8?? Może plik masz zakodowany w iso 88592??

Pod spodem masz przykład prostego formularza który poprawnie wysyła polskie znaki na skrzynkę gmail:

Kod
<!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>
    <title>wysyłanie formularza na gmail</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <meta name="robots" content="nome" />
</head>
<body>

<?php

$form = '<form method="post">' .
        '    <div style="clear:both"><textarea name="tresc">'.$_POST['treść'].'</textarea></div>' .
        '    <div style="clear:both"><input type="submit" name="submit" /></div>' .
        '</form>';
  
if ( !empty($_POST['submit']) /** && warunek na wysłanie maila */ ) {
    $message = "Treść wiadomości:\n$_POST[tresc]\n\n";
    $from = "barthpl <barthpl@barthpl.net>";
    $header = "From: $from\nReply-to: $from\nMIME-Version: 1.0\nContent-type: text/html; charset=UTF-8";

    @mail( "barthpl@gmail.com", "Wiadomosc ze strony Testowy", $message, $header )
        or die("<p>Nie udało się wysłać wiadomości</p>\n$form" );
    echo '<p>Formularz poszedł</p>';    
}
else echo $form;
?>

</body>
</html>

Wystarczy go rozbudować o dodatkowe pola (te które potrzebujesz) i dodatkowe warunki sprawdzania.
marek244
Mam pytanie jak wysłać email z formularza z serwer 000webhost na wp, gdyż niby wiadomość wysłana a nie doszła, natomiast np na tlen dochodzi
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.