Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Formularz pocztowy
--efan--
post 3.09.2008, 11:39:08
Post #1





Goście







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. ?>
Go to the top of the page
+Quote Post
ferrero2
post 3.09.2008, 11:53:52
Post #2





Grupa: Zarejestrowani
Postów: 171
Pomógł: 32
Dołączył: 5.08.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


proponuje zapoznać się z tym tematem :

http://forum.php.pl/index.php?showtopic=101978&hl=


--------------------
---------------------------
"Jeżeli trzeci dzień z rzędu nie chce Ci się pracować tzn że dziś jest ŚRODA !
Algorytmy , Programowanie , Tworzenie WWW - SPRAWDŹ
Go to the top of the page
+Quote Post
barthpl
post 3.09.2008, 12:19:51
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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 ??


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
Go to the top of the page
+Quote Post
--Efan--
post 4.09.2008, 09:35:20
Post #4





Goście







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. ?>
Go to the top of the page
+Quote Post
barthpl
post 6.09.2008, 23:54:39
Post #5





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
Go to the top of the page
+Quote Post
tiraeth
post 7.09.2008, 00:02:36
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Efan
post 19.09.2008, 11:49:57
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 25.01.2007

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
tiraeth
post 19.09.2008, 12:02:13
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.

Ten post edytował tiraeth 19.09.2008, 12:02:50
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 03:09