Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: na kupionym serverze nie działa funkcja mail() :(
Forum PHP.pl > Forum > PHP
jafet
Witam Was!

Kupiłem konto z php, sqlem na swoją stronę. Uczę się php i napisałem sobie skrypt do subskrubcji wykorzystujący funkcję mail(). Wszystko działa poza tą funkcją. Pisałem do admina ale on jest jakiś niekumaty, nie zna się na php i mówi że wszystko niby jest ok. Ale wiem że nie jest bo maile nie dochodzą a skryp nie ma żadnych błędów. Co mam mu napisać? Co jest nie tak z tym serverem??
Proszę o pomoc.
Z gory dzieki
Yarecki
Spróbuj dodać 4 argument funkcji mail, z poprawnym adresem email nadawcy.
mail( $adresat, $tytul, $tresc, "-fuser@domena.pl" );
Na domeny.pl bez ostatniej części maile nie dochodzą do odbiorcy. Możliwe, że u Ciebie jest podobnie.
tiraeth
A może konfiguracja serwera (dokładniej php.ini) ma ustawione safe_mode = On questionmark.gif
jafet
Cytat(Yarecki @ 2004-09-28 18:25:54)
Spróbuj dodać 4 argument funkcji mail, z poprawnym adresem email nadawcy.
mail( $adresat, $tytul, $tresc, "-fuser@domena.pl" );
Na domeny.pl bez ostatniej części maile nie dochodzą do odbiorcy. Możliwe, że u Ciebie jest podobnie.

CZy ten czwarty argument to musi byc konto pocztowe z tego samego servera co konto www?questionmark.gif
Spróbowałem ale tez nie dziala :/
Dzieki za pomoc. Sprawdzalem na innym koncie testowym i tam dziala funkcja mail().
Co mam napisac do admina?
Co musi on ustawic zeby w koncu zadzialalo??
sf
Jak nie zwraca bledu? A zwraca false? Ustaw sobie by wyswietal wszystko co jest mozliwe errrory, notice, warningi... (bylo na forum jak to zrobic, poszukaj).

Jesli admin mowi, ze dziala to niech sprawdzi na najprostrzym kodzie czy jest ok. Sam mu taki mozesz wyslac.

A co ma zrobic jak nie dziala? RTFM!
Lukasz Luczak
To, że maile nie dochodzą to może być dlatego, że serwery na jakie wysyłasz blokują.

Poza tym dokładnie przeanalizuj kod krok po kroku (radz nawet wykorzystać logera PEAR'a), sprawdź czy mail jest wywoływany z prawidłowymi argumentami.

Jak to nic nie pomoze to ściągnij sobie jakąś klasę do obsługi sendmaila i wysyłaj przez niego - działa o wiele lepiej niż zwykł mail php.

Pozdrawiam,

ps: jak co to podaj tutaj kod - sprawdzę na swoim serwerze czy kod jest ok.
jafet
Sorki że dopiero teraz odpowiadam. Dzieki za pomoc. Chyba sobie sciagne jakas klase.
Do Lukasza L: jakbys mogl mi sprawdzic ten moj skrypt to tutaj podaje kod:

<?php

if (!$tresc || !$tytul)
{
echo ' <p align=center class="menu"> brak tresci lub wpisu </p>';
exit;
}

@ $db=mysql_pconnect('localhost','web_omel','mojehaslo');
if (!$db)
{
echo ' <p align=center class="menu"> połączenie nie powiodło się </p>';
exit;
}
mysql_select_db('web_foto');
$zapytanie="select * from maile";
$wynik=mysql_query($zapytanie);

echo '<p align=center class="menu"> Wysłano maila do: </p>';

while($wiersz = mysql_fetch_array($wynik))
{
$adres = stripslashes($wiersz['mail']);
if (mail($adres,$temat,$tresc))
{
echo '<p align=center class="menu">'.$adres.'</p>';
}
}
?>

Z gory dzieki za pomoc
Lukasz Luczak
jafet proponuję Ci dać coś takiego i sprawdzić jakie masz wyniki:

  1. <?php
  2.  
  3. if (!$tresc || !$tytul)
  4. {
  5. echo ' <p align=center class=\"menu\"> brak tresci lub wpisu </p>';
  6. }
  7.  
  8. @ $db=mysql_pconnect('localhost','web_omel','mojehaslo');
  9. if (!$db)
  10. {
  11. echo ' <p align=center class=\"menu\"> połączenie nie powiodło się </p>';
  12. }
  13. mysql_select_db('web_foto');
  14. $zapytanie=&#092;"select * from maile\";
  15. $wynik=mysql_query($zapytanie);
  16.  
  17. echo '<p align=center class=\"menu\"> Wysłano maila do: </p>';
  18.  
  19. while($wiersz = mysql_fetch_array($wynik))
  20. {
  21. $adres = stripslashes($wiersz['mail']);
  22. echo( &#092;"<p align=center class=\"menu\"> * Wysyłam maila do : $adres ...\");
  23. if (mail($adres,$temat,$tresc))
  24. {
  25. echo 'sukces</p>';
  26. } else {
  27. echo 'porażka</p>';
  28. }
  29. }
  30. ?>


Będziesz wiedział czy próbuje wysłąćmaile czy teznie i dowiesz się gdzie tkwi błąd. Być może błędne jest zapytanie SQL lub też późniejssze parsowanie wyników.

Oczywiście może być takze źle skonfigurowana funkcja mail - ale to juz trzeba być ganiuszem by coś skopać smile.gif
anas
Hej.

A moze najzwyczajniej w swiecie jest wlaczona autoryzacja smtp na serwerze - nawet przy wylaczonym safe_mode i mozliwosci korzystania z funkcji mail() cala procedura nie powiedzie sie gdyz funkcja mail w php nie posiada mozliwosci prostej autoryzacji -> poruszalismy to na forum - aby wyslac email-a na serwerze z autrozyacja potrzebna nam bedzie klasa smtp, badz troche weny tworczej i wiedzy na temat dzialania poczty i gniazd.

pozdrawiam

anas

ps. klase ta znalezc mozesz na zend.com lub w googl'ach.
Lukasz Luczak
Witam,

anas - nawet jak jest autoryzacja to email pójdzie (trzeba tylko dobrze skonfigurować php). Pozatym najczęściej jest włąśnie port SMTP blokowny (aby spamu nie wysyłać) i dostępne są tylko mail lub sendmail - ja osobiście uważam, że sendmail jest najlepszym rozwiązaniem - kolejkuje zapytania i wysyła kiedy może podczas gdy mail stara siewysyłać od razu...

Pozdrawiam
anas
Hej.

Cytat
anas - nawet jak jest autoryzacja to email pójdzie (trzeba tylko dobrze skonfigurować php). Pozatym najczęściej jest włąśnie port SMTP blokowny (aby spamu nie wysyłać) i dostępne są tylko mail lub sendmail


Moja firma swiadczy uslugi hostingowe - jak powiesz mi jak trzeba skonfigurowac php, aby funkcja mail dzialala bez problemu, a przy tym nie dawala mozliwosci spamowania, podszywania sie pod innych uzytkownikow poczty to zaplace Ci za to, zapraszam wiec na priva z rozwiazaniem. Co do blokowania portow na ktorych dziala protokol SMTP - to robiac to zablokowalbys caly ruch dotyczacy poczty - wiec nie rozumiem jak mialaby wtedy dzialac funkcja mail.

Dla provider'ow pozostal wiec wybor miedzy odblokowaniem lokalnej autoryzacji smpt, ale wtedy jak masz konto z php na serwerze w domnie np. serwer.pl -> i na nim wysyalm email to moge podszyc sie pod np. admin@serwer.pl -> takie rozwizanie - jak dla mnie jest niedopuszczalne - dla takich providerow jak np. home.pl -> jest smile.gif. Sam sprawdzalem.

W tej chwili na naszym firmowym serwerze strony poszczegolnych uzytkownikow dzialaja z ich uprawnieniami - np. wywolujac swoj skrypt test.php -> nie odpala sie jako user www/www lub nobody/nobody - jak w przypadku apache'a, ale jako wlascieciel pliku/grupa wlasciciela - dlatego chcemy przepisac funkcje mail w php aby autoryzacja przebiegala na zasaszie zaufania - jesli gosc jako argument od podal np. jan@domena.pl to funkcja mail wpierw sprawdzi czy domena.pl nalezy do uzytkownika - jest przypisana do jego konta - jesli tak pojdzie dalej, jesli nie zwroci FALSE... innego rozwizania nie widze - chyba ze ktos z was mi podpowie jak mozna to latwej rozwiazac, aby nie oduczul tego uczciwy uzytkownik konta w tym php.

pozdrawiam

anas
dvc
moze to pomoze :

w polu Form: nalezy wpisac aktualny istniejacy e-mail z tego serwera

np.

FORM: user@SERWER_NA_KTORYM_JEST_TEN_USER_I_TEN_SKRYPT_PHP
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.