Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz pocztowy
Forum PHP.pl > Forum > Przedszkole
-efan-
Witam. Mam problem z formularzem pocztowym:
1. Kodowanie nagłówka wiadomości oraz treści wiadomości - albo jedno albo drugie jest dobrze, nigdy razem
2. Treść wiadomości dostaję w jednej lini choć mam znaczniki \n
3. Ten znacznik powoduje błąd: or die('Nie udało się wysłać wiadomo¶ci!');

  1. <?php
  2. // generowanie naglowka wiadomosci
  3.  
  4. $header = "From: $_POST[imie] <$_POST[email]>r\n";
  5. $header .= "Reply-to: $_POST[imie] <$_POST[email]>r\n";
  6. $header .= "MIME-Version: 1.0r\n"; 
  7. $header .= "Content-type: text/html; charset=UTF-8r\n";
  8.  
  9. // $header .= "Content-Transfer-Encoding: base64\n";
  10.  
  11. // generowanie wiadomosci
  12.  
  13. $message = "Imię, Nazwisko: $_POST[imie]\n";
  14. $message .= "Adres e-mail: $_POST[email]\n";
  15. $message .= "...........................\n";
  16. $message .= "$_POST[tresc]\n";
  17. $message .= "...........................\n";
  18.  
  19. // wysylanie maila
  20.  
  21. mail("$email_admin", "$email_temat", "$message", "$header");
  22.  
  23. // or die('Nie udało się wysłać wiadomości!');
  24.  
  25. echo '<p class="alert">Wiadomość została wysłana poprawnie!</p>';
  26. ?>
ferrero2
proponuje zapoznać się z tym tematem :

http://forum.php.pl/index.php?showtopic=101978&hl=
barthpl
Wprowadź taką zmianę:
  1. <?php
  2. $title = sprintf( "=?utf-8?B?%s?=", base64_encode(email_temat) );
  3. mail("$email_admin", $title, "$message", "$header");
  4. ?>


Testowałem wysyłanie na gmail i działa.

p.s.: swoją drogą to czemu piszesz "$email_admin" zamiast $email_admin ??
-Efan-
Poszperałem jeszcze i znalazłem coś takiego i ku mojemu zdumieniu poprawnie konwertuje temat wiadomości, jednak nadal mam problem z nagłówkiem. Jest problem jak ktoś będzie nazywał się "Łukasz Pięść" bo wyjdą krzaczki.

  1. <?php
  2. $temat = stripslashes($email_temat);
  3. $temat = strtr($email_temat, "xA5x8Cx8FxB9x9Cx9F", "xA1xA6xACxB1xB6xBC");
  4.  
  5.  mail($email_admin, $temat, $wiadomosc, $naglowek);
  6. ?>
barthpl
Linijkę 4 zastąp takim kodem:
  1. <?php
  2. $imie = sprintf( "=?utf-8?B?%s?=", base64_encode($_POST['imie']) );
  3. $header = "Fro: $imie <$_POST[email]>r\n";
  4. ?>

dalej tak jak poprzednio (pamiętaj o przedytowaniu również tytułu) i wiadomości od Pana Łukasz Pięść będą przechodziły ładnie zakodowane, przynajmniej na google. Oczywiście taką zmianę będzie trzeba przeprowadzić we wszystkich polach które mogą zawierać dziwne (polskie) znaczki.
tiraeth
Chcesz wiedzieć, dlaczego wszystko wyświetla Ci się w jednej linii? Bo wiadomość wysyłasz jako HTML. A w HTML, żeby nową linię dać, to albo <br />, albo <p>. W funkcji mail" title="Zobacz w manualu PHP" target="_manual, zamiast "$message" daj nl2br($message) - to tak prowizorycznie rozwiąże problem.
Efan
Nie do końca działa. Kod źródłowy mam taki:
  1. <?php
  2. $wiadomosc = "ImiÄ™, Nazwisko: $_POST[imie]\n";
  3.        $wiadomosc .= "Adres e-mail: $_POST[email]\n";
  4.        $wiadomosc .= "...........................\n";
  5.        $wiadomosc .= "$_POST[tresc]\n");
  6.        $wiadomosc .= "...........................\n";
  7. ?>


Po zmianie dalej nie dziala:
  1. <?php
  2. $wiadomosc = "ImiÄ™, Nazwisko: $_POST[imie]\n";
  3.        $wiadomosc .= "Adres e-mail: $_POST[email]\n";
  4.        $wiadomosc .= "...........................\n";
  5.        $wiadomosc .= "$_POST[tresc]\n");
  6.        $wiadomosc .= "...........................\n";
  7.  
  8. nl2br($wiadomosc);
  9. ?>


Nie działa również:
  1. <?php
  2. $wiadomosc = "ImiÄ™, Nazwisko: $_POST[imie]\n");
  3.        nl2br($wiadomosc .= "Adres e-mail: $_POST[email]\n");
  4.        nl2br($wiadomosc .= "...........................\n");
  5.        nl2br($wiadomosc .= "$_POST[tresc]\n");
  6.        nl2br($wiadomosc .= "...........................\n)";
  7. ?>


Gdzie tkwi błąd?
tiraeth
U Ciebie tkwi błąd. Ja nie wiem czy ludzie już tak głupi się rodzą, czy gdzieś to się nabywa...

  1. <?php
  2. $temat = 'Temat wiadomości';
  3. $email = 'email@example.com';
  4.  
  5. $temat = sprintf( "=?utf-8?B?%s?=", base64_encode($temat) );
  6. $imie = sprintf( "=?utf-8?B?%s?=", base64_encode($_POST['imie']) );
  7.  
  8. $header = "Fro: $imie <$_POST['email']>r\n";
  9. $header .= "Reply-to: $imie <$_POST['email']>r\n";
  10. $header .= "MIME-Versio: 1.0r\n";
  11. $header .= "Content-ty: text/html; charset=UTF-8r\n";
  12.  
  13. $message = "Imię, Nazwisko: $_POST['imie']\n";
  14. $message .= "Adres e-mail: $_POST['email']\n";
  15. $message .= "...........................\n";
  16. $message .= "$_POST['tresc']\n";
  17. $message .= "...........................\n";
  18.  
  19. $message = nl2br($message);
  20.  
  21. mail($email_admin, $title, $message, $header);
  22. ?>


I zacznij chłopie myśleć, bo to nie boli.
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.