ďťż
 
 
   Znak końca linii w php mail()
 
 

Tematy

 
    
 

 

 

 

Znak końca linii w php mail()





kefflar - 15-05-2008 12:38
Witajcie:

Serwer to Debian Etch, próbuję wykorzystać funkcję mail() z php'a do wysyłania maili. No i problem polega na tym, że skrypty przeniesione z FC 6.0 nie działają tak jak powinny. Na stronie mam podpiętą taką funkcję do wysyłania maila: <?php
$to      = 'osoba@example.com';
$subject = 'temat';
$message = 'witam';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?> Jest to wzięte ze strony php.net. Wszystko wysyłało się ładnie na FC 6.0, ale w przypadku Debiana mail dochodzi z nagłówkami w treści maila. Jeśli zmienię znaki końca linii z "\r\n" na "\n" to wszystko wysyła się tak jak trzeba. Dla mnie jednak to nie jest dobre rozwiązanie - musiałbym taką operację przeprowadzić w źródłach każdej strony - a jest ich kilkaset. Wiem, że pakiet php-mail jest w starszej wersji w Debianie niż był w Fedorze. Podmieniłem go razem z php-mail-mime ale ten zabieg nic nie pomógł.

Zastanawiam się co jeszcze może być przyczyną takiego zachowania i dlatego proszę Was o pomoc. Za wszelkie wskazówki będę bardzo wdzięczny.

Pozdrawiam

Update:
Po głębszej analizie okazało się, że problem nie leży po stronie php lecz po stronie serwera przyjmującego pocztę. Nie wiedzieć czemu Qmail nie rozpoznaje nagłówków zdefiniowanych w funkcji php. Wstawia na końcu każdego nagłówka znak końca linii ^M , który później skutkuje złym wyświetlaniem wiadomość w czytnikach poczty.

No cóż, szukam dalej...

Update:

Problem opisany Tutaj



zulowski - 18-05-2008 15:41
Może troszkę nie związane z tematem, ale:
piszesz, że musiał byś ten skrypt zmieniać na "kilkuset" stronach, a nie łatwiej było po prostu ten skrypt napisać raz w pliku np wyslijMail.php, i w pozostałych stronach dołączać ten plik w odpowiednich miejscach?



kefflar - 19-05-2008 10:25

Może troszkę nie związane z tematem, ale:
piszesz, że musiał byś ten skrypt zmieniać na "kilkuset" stronach, a nie łatwiej było po prostu ten skrypt napisać raz w pliku np wyslijMail.php, i w pozostałych stronach dołączać ten plik w odpowiednich miejscach?
Może i lepiej - gdybym to ja zajmował się pisaniem tych stron. W linku do bugtracka php(który podałem w poście wyżej) opisana jest przyczyna - i wiąże się ona z błędną interpretacją funkcji mail() przez serwer QMAIL. Rozwiązanie znalazłem poprzez prosty skrypt. Mail php'owy zamiast wysyłać za pomocą sendmaila(a właściwie polecenia qmail-inject) wysyła dane najpierw do skryptu, który usuwa znaki końca linii "\r" a następnie przekazuje wynik do qmail-inject.

Proste i załatwia problem w całości.

Pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis