Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PROBLEM] Wysyłanie wiadomości e-Mail z poziomu przeglądarki, mail();
peja1990
post 10.03.2012, 12:32:42
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Witam,
mam upierdliwy problem z funkcją mail() w PHP.

Czemu upierdliwy ?
Napisałem dosyć obszerny skrypt formularza jQuery...
Wszystko ładnie działa, jednak na koniec PHP daje mi za przeproszeniem w dupę funkcją mail(), może jest to śmieszne ale cóż... Zdarza się smile.gif

W czym problem ?
Mianowicie, przesyłam dane z formularza jQuery funkcją serialize() w metodzie POST
  1. $.post("message.php?" + form.serialize());

No i wszystko nadal jest GIT, odbieram dane _REQUEST'em, odbiera świetnie smile.gif
No ale co... Gdy odbieram wartość zmiennej zawierającą treść maila (z pola textarea oczywiście) i chcę ją przetworzyć funkcją nl2br, to nic z tego...
Entery wstawione w formularzu nie wyświetlają się w mailu...
Próbowałem na różne sposoby, ustawiałem kodowanie pliku (UTF-8 / ISO-8859-1) i NIC...
Ogólnie html przekazany z formularza wyświetla się tak jak powinien... tylko te nowe linie...
Próbowałem również zdefiniować przykładową zmienną w pliku z funkcją mail(), która zawierała zwykły tekst z nowymi liniami tak, jakbym go wpisał w formularzu i co ?! Tak działa... ;/

Oto mój plik z funkcją mail()
  1. if(
  2. validateNames($_REQUEST['names'])
  3. && validateEmail($_REQUEST['email'])
  4. && validateContent($_REQUEST['content'])
  5. && validateCaptcha($_REQUEST['code'], $_SESSION['security'])
  6. ) {
  7. $mainEmail = "office@example.com";
  8. if(isset($_REQUEST['copy']) && $_REQUEST['copy'] == 1) {
  9. $recipients = $mainEmail.", ";
  10. $recipients .= $_REQUEST['email'];
  11. } else {
  12. $recipients = $mainEmail;
  13. }
  14. $subject = $_language->module['message_subject'];
  15.  
  16. $content = "<html><head><title>".$_language->module['message_subject']."</title></head><body>";
  17. $content .= nl2br(stripslashes(htmlspecialchars_decode($_REQUEST['content'])));
  18. $content .= "</body></html>";
  19.  
  20. $headers = "MIME-Version: 1.0"."\n";
  21. $headers .= "Content-Transfer-Encoding: 8bit"."\n";
  22. $headers .= "Content-type: text/html; charset=UTF-8"."\r\n";
  23. $headers .= "From: ".$_REQUEST['names']." <".$mainEmail.">"."\r\n";
  24. $headers .= "To: ".$mainEmail." <".$mainEmail.">"."\r\n";
  25. if(isset($_REQUEST['copy']) && $_REQUEST['copy'] == 1) {
  26. $headers .= "Reply-to: ".$_REQUEST['email']." <".$_REQUEST['email'].">"."\r\n";
  27. $headers .= "Cc: ".$_REQUEST['email']."\r\n";
  28. $headers .= "Bcc: ".$_REQUEST['email'];
  29. }
  30. if(!mail($recipients, $subject, $content, $headers)) {
  31. echo $_language->module['message_error'];
  32. }
  33. }




Wie ktoś co może być powodem tego upierdliwego problemu ?
Za pomoc będę bardzo wdzięczny bo chwilę już nad tym siedzę i nie mam już pomysłu co z tym zrobić dlatego piszę tutaj...

Serdecznie pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Uriziel01
post 10.03.2012, 18:36:32
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


A zrób proszę var_dump z czystego $_REQUEST['content'] który dostajesz na początku oraz z gotowego $content zaraz przed wysłaniem. Zobaczymy jak to wygląda.

Ten post edytował Uriziel01 10.03.2012, 18:36:52
Go to the top of the page
+Quote Post
peja1990
post 11.03.2012, 22:58:27
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Rozwiązałem swój problem wink.gif

  1. eregi_replace("[\][r][\][n]", '<br />', $_REQUEST['content']);


Próbowałem to zapisać w formie \\r\\n, ale to nie zadziałało wink.gif Więc poszedłem trochę na łatwiznę ?! ;D
Go to the top of the page
+Quote Post
cudny
post 11.03.2012, 23:03:25
Post #4





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Normalne, masz magic quote na serwerze.
Zawsze po otrzymaniu danych dawaj stripslashes($value); potem dopiero można się zająć walidacją danych


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
peja1990
post 11.03.2012, 23:14:03
Post #5





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


No ok, ale ja je odbieram w jQuery więc co w tym wypadku ? smile.gif
Go to the top of the page
+Quote Post
cudny
post 11.03.2012, 23:34:09
Post #6





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


pisze z komórki. kompa już wylaczylem. nie sprawdze teraz jak wysyłasz i odbierasz dane. ogólnie jak request idzie przez serwer to każdy \ poprzedzi ci też \ w rezultacie masz zamiast \n \\n
jeśli nie możesz użyć php to w javascript daj string.replace(/\\\\/gi,"\\") jak coś to jutro od 8:30 jestem online


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
peja1990
post 11.03.2012, 23:38:00
Post #7





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


No dobrze, ale co ma oznaczać wartość /\\/gi bo to uzyskamy po tym co napisałeś i co to da, że zamienimy to na dwa slashe ? smile.gif
Go to the top of the page
+Quote Post
cudny
post 12.03.2012, 00:22:18
Post #8





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


\ jest znakiem specjalnym i w wyr. reg. trzeba fo poprzedzić też \
w rezultacie zamieniasz każde \\ na \


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
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: 19.07.2025 - 05:52