Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PROBLEM] Wysyłanie wiadomości e-Mail z poziomu przeglądarki
Forum PHP.pl > Forum > PHP
peja1990
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
Uriziel01
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.
peja1990
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
cudny
Normalne, masz magic quote na serwerze.
Zawsze po otrzymaniu danych dawaj stripslashes($value); potem dopiero można się zająć walidacją danych
peja1990
No ok, ale ja je odbieram w jQuery więc co w tym wypadku ? smile.gif
cudny
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
peja1990
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
cudny
\ jest znakiem specjalnym i w wyr. reg. trzeba fo poprzedzić też \
w rezultacie zamieniasz każde \\ na \
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.