Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> funkcja php mail() znak końca linii, Mail wysłany za pomocą tej funkcji wyświetla się niepoprawnie.
kefflar
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 15.05.2008

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


Witajcie, jako nowy użytkownik tego forum chciałem najepierw wszystkich powitać:

Witajcie smile.gif

A teraz problem:

  1. <?php
  2. function sendEmail($from, $to, $subject, $text, $nl2br = false)
  3. {
  4. $headers = "MIME-Version: 1.0" . "r\n";
  5. $headers .= "Content-type: text/html; charset=utf-8" . "r\n";
  6. $headers .= "From: " . $from . "r\n";
  7. if ($nl2br)
  8. $text = nl2br ($text);
  9. $text = stripslashes ($text);
  10. return @mail($to, $subject, $text, $headers);
  11. }
  12. ?>


tak wygląda funkcja wysyłania maila. Wzięta ze strony php.net.
Problem polega na tym że mail wysłany za pomocą tej funkcji wygląda jak jedna wielka sieczka. Brak kodowania, wyświetlają się w treści nagłówki. A wystarczy, że zamienię "\r\n" na \n" i już wszystko działa jak należy. Wcześniej działało to na serwerze z PHP 5.16 obecnie jest PHP 5.20. Wersja php-mail to 1.1.6.

Wcześniej ta sama wersja działała na serwerze FC 6.0 obecnie jest to Debian Etch.

Może ktoś z Was miał tego typu problem? Będę wdzięczny za wszelkie podpowiedzi. Owszem istnieje jeszcze opcja zmiany tego na kilkuset stronach - ale wolałbym jej uniknąć smile.gif

Ten post edytował batman 15.05.2008, 21:10:10
Powód edycji: Dodałem bbcode. Tak na przyszłość - pamiętaj, by robić to samemu
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
cbagov
post
Post #2





Grupa: Zarejestrowani
Postów: 181
Pomógł: 18
Dołączył: 19.04.2008

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


Server Linuxowy przewaznie nie wymaga \r takze mozesz sobie w konfigu zdefioniowac OS i w zaleznosci od tego ustawiac separator dla naglowka poczty.
Go to the top of the page
+Quote Post
kefflar
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 15.05.2008

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


Cytat(cbagov @ 15.05.2008, 10:52:51 ) *
Server Linuxowy przewaznie nie wymaga \r takze mozesz sobie w konfigu zdefioniowac OS i w zaleznosci od tego ustawiac separator dla naglowka poczty.

Rozumiem że można to zrobić globalnie dla wszystkich stron. Znalazłem cos takiego w pakiecie php-mail, a ponieważ nie jestem mocny w PHP to pytam:

/* Because the mail() function may pass headers as command
* line arguments, we can't guarantee the use of the standard
* "\r\n" separator. Instead, we use the system's native line
* separator. */
$this->sep = (strstr(PHP_OS, 'WIN')) ? "\r\n" : "\n";
Jeśli ta część konfiguracji odpowiada za zmianę separatora - to jak to zmienić dla linuxa ?

Właśnie przeglądam te funkcje w pakiecie php-mail ale wydaje mi się, że one i tak nie zmienią mi tego w nagłówkach maila. Zresztą próbowałem wstawić coś takiego:

$this->sep = (strstr(PHP_OS, 'Linux')) ? "\n" : "\r\n";

Ale nie pomogło. sad.gif Podejrzewam, że ma to związek ze zmianą systemu. Tylko od czego zacząć szukanie ? sad.gif

Ten post edytował kefflar 15.05.2008, 10:41:53
Go to the top of the page
+Quote Post
cbagov
post
Post #4





Grupa: Zarejestrowani
Postów: 181
Pomógł: 18
Dołączył: 19.04.2008

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


$this->sep =

rozumiem, ze masz obiekt ze skladowa -sep-, bo chyba nie wpisales tego tak sobie ?winksmiley.jpg pytam dla pewnosci.

Rozwiazania masz dwa, jesli wykrycie systemu i podmiana separatora nie pomaga, bo faktycznie wykrywanie np. nie dziala, to umieszczasz we wlasnym pliku konfiguracyjnym wlasciwy separator i tyle. Wtedy jesli PHP_OS nie dziala z jakiegos powodu uzywasz danych z warunku.
Go to the top of the page
+Quote Post
kefflar
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 15.05.2008

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


Okazuje się że problem leży po stronie serwera pocztowego, lub jakiegoś komponentu zajmującego się przyjmowaniem poczty. Może spamassassin. Jak wysyłam pocztę na inny serwer to mail dochodzi prawidłowo. sad.gif

No cóż trzeba dalej grzebać w konfiguracji.


Problem rozwiązany:

a opisany jest tutaj:
http://bugs.php.net/bug.php?id=15841

U mnie niestety nie działało rozwiązanie podane w linku na końcu. Jeśli ktoś z Was będzie miał podobny problem to zapraszam.
Go to the top of the page
+Quote Post
Less
post
Post #6





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 4.06.2007

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


dzięki za ten post


--------------------
Less
:)
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 Aktualny czas: 21.08.2025 - 08:50