Znak ko

Potrzebujesz pomocy z C, C++, perl, python, itp.
kefflar

Znak końca linii w php mail()

Post autor: kefflar »

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:

Kod: Zaznacz cały

<?php
$to      = 'osoba@example.com';
$subject = 'temat';
$message = 'witam';
$headers = 'From: [email]webmaster@example.com[/email]' . "\r\n" .
    'Reply-To: [email]webmaster@example.com[/email]' . "\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 , który później skutkuje złym wyświetlaniem wiadomość w czytnikach poczty.

No cóż, szukam dalej...


Update:

Problem opisany Tutaj
zulowski
Posty: 68
Rejestracja: 22 maja 2007, 10:47

Post autor: zulowski »

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

Post autor: kefflar »

zulowski pisze: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
ODPOWIEDZ