[PHP] Kaprysne dzialanie funkcji mail()

0

Co moze byc przyczyna kaprysnego wysylania maili za pomoca funkcji mail? Mam stronke na superhost.pl. Tam tez jest skrypt integrujacy platnosci z moim serwisem. Sam ten skrypt napisalem, czyli wiem co tam jest. Dziala w nim wszystko jak zaplanowalem. Fajnie, pochwalilem sie. Jednak nie wszystko jest porzadku. Otoz kaprysnie zachowuje sie funkcja mail. Po rozpoczeciu transakcji lacze sie z baza, dzieja sie cuda na kiju. Jest tez wysylanie maila z powiadomieniem, ale nie zawsze to dziala. Jesli dwie, trzy osoby dziennie dokonaja zakupu, dostane nie wszystkie maile, np. jednego, czasem dwa, a moze i czasem wszystkie trzy. Co moze powodowac takie dzialanie? Zaznaczam, ze wszystko inne dziala. Sprawdzilem kazdy kawalek kodu, wrzucalem tam warunki, echo, printy, aby sprawdzic, czy czasem cos sie nie wysypuje. Wszystko jest ok, klienci sa zadowoleni, ale ja co jakis czas musze "recznie" sprawdzac w bazie (gdzie wszystko jest poprawnie odnotowane!) przebieg transakcji.
W uproszczeniu jest tak (po nawiazaniu transakcji):

...
mail($do, $temat, $tresc, "Content-Type: text/plain; charset="iso 8859-2"");
//tu lacze sie z baza, gdzie wszystko jest ok
...

Sory, za przydlugawego maila, ale nie chcialem pisac po prostu "funkcja mail() nie dziala; co zrobic?".
ps. Bardzo prosze o nieudzielanie porad "skorzystaj z PEAR" albo innej klasy do wysylania maili. Chcialbym sie dowiedziec, dlatego funkcja mail() nie dziala jak powinna.

0

To nie jest pseudo-forum. Tutaj nie ma licznika postów, ani ludzi którzy udzielają się pomimo braku znajomości tematu.

Funkcja mail() odwołuje się do SMTP. Skoro maile nie dochodzą, a skrypt jest zawsze taki sam, to znaczy że superhost jest taki świetny tylko z nazwy. Użyj klasy PHPMailer ( http://phpmailer.codeworxtech.com/index.php?pg=examplebsmtp ) podając jej jakiś zewnętrzny serwer SMTP (są takowe dostępne za darmo w sieci) i zobaczysz że jeśli dobry wybrałeś to wszystkie maile będą dochodziły.

0

A przeczytales ze zrozumieniem? Nie napisalem, ze funkcja mail() nie dziala, ale to, ze nie zawsze dziala, a to duza roznica. Jesli nie wiesz dlaczego, to nie polecaj mi innych skryptow, bo potrafie jest sobie wrzucic, ale nie o to prosilem.

0

Przeczytałem twojego posta bardziej dokładnie niż sądziłeś. Wina kaprysów czy też nie działania (akurat tutaj jedna chwała) tej funkcji to leniwy serwer SMTP. Ja Ci polecam wdrożyć PHPMailera i tam podać adres do innego serwera (tak jak pisałem są darmowe w sieci), a zaproponowałem to ponieważ zwykła funkcja mail() nie ma takiej możliwości.

Możesz jeszcze napisać do admina tego hostingu (pewnie i tak nic to nie da) albo zmienić hosting. Ja radykalnych rozwiązań w tej chwili nie polecam.

0

Być może tego nie doczytałeś w dokumentacji, ale jest tam wyraźnie zaznaczone, że pomyślny wynik funkcji mail() nie oznacza udanego wysłania wiadomości, a jedynie zaakceptowanie wiadomości do wysłania przez serwer smtp ustawiony w php.ini. Natomiast nad dalszymi losami tego listu praktycznie w ogóle już nie panujesz. Może on zostać wysłany, wysłany z opóźnieniem, albo wręcz olany. Czasem o tym jak działa mail() może zadecydować administrator serwera - świadomie bądź nie. I to tutaj upatrywałbym pewnych możliwości zmiany stanu obecnego. ;)

0

No cóż... po prostu zapisz kiedy wysyłałeś maila który np. nie doszedł i niech admin sprawdzi w logach...

Ale pewnie nie sprawdzi. Superhost to trochę lipa ale zawsze przecież możesz spróbować z zewnętrznym serwerem SMTP żeby zweryfikować czy to faktycznie wina serwera od wysyłania maili

0

To samo mu właśnie piszę, więc się nie kopiujmy. Tyle że jak zwykle co po niektórzy nie chcą mi uwierzyć bez rozległych wyjaśnień.

0

Prawdopodobnie serwer ten jest zapisany w niektórych serwisach jako spamowy. Polecam sprawdzić w skrzynce pocztowej folder SPAM. Zmień serwer albo zrób tak jak pisze Demonical Monk. Innej rady nie ma.
Oczywiście zawsze możesz napisać do wszystkich serwisów gdzie maile nie dochodzą aby wypisały ten serwer z listy spamu ale to walka z wiatrakami. Rozpatrywanie takich podań trwa wiele dni a jak jest to serwer używany przez wiele osób nigdy nie ma pewności, że ponownie nie trafi na listę spamerów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1