Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Internet > Web razvoj > Serverske aplikacije i baze podataka

Serverske aplikacije i baze podataka PHP, Perl, ASP, ASP .NET, ColdFusion...
MySQL, PostgreSQL, MSQL, Oracle...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 9.6.2007, 20:50   #1
mirk
Član
 
Član od: 13.10.2006.
Poruke: 172
Zahvalnice: 4
Zahvaljeno 4 puta na 4 poruka
Određen forumom [PHP] Ne radi mi mail() funkcija

Radim jedan program u php-u koji šalje ime i prezime na e-mail adresu. Ime i prezime se prvo ukucaju u html formi koja šalje te podatke php skripti te php skripta treba ime i prezime poslati na određenu e-mail adresu. Sad upišem ime i prezime odem pošalji i nema nikakvih upozorenja, ali kad pogledam sandučić nema nikakvog mail-a. Neznam stvarno u čem je problem. Evo koda

Kod:
<?php

$name = $_POST["ime"];
$lastn = $_POST["prezime"];
 
$msg = "$name $lastn";

$to = "crossfire_os@hotmail.com";
$subject = "Hi!";
mail($to, $subject, $msg, "From: hehehe");
?>
Hvla unaprijed!!!
mirk je offline   Odgovor sa citatom ove poruke
Stara 9.6.2007, 21:29   #2
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: neradi mail() funkcija

Pa ja ti prvi kao mail server ne bi primio tu poštu već bih je lepo šutnuo negde duboko u neki "Trash" folder Evo ti primer kako bi trebao da izgleda ispravno formirana funkcija za slanje maila iz PHP mailera.
Kod:
$subject = "Neki subject!";
$from_mail = "from@moj_domen.com"; //email adresa posiljaoca
$reply_mail = "reply@moj_domen.com"; //email adresa za odgovor mail servera
//priprema headera za slanje
$headers  = 'MIME-Version: 1.0' . "\r\n"; //MIME v1.0 kompatibilan
$headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n"; //tip i enkoding
$headers .= 'From: '.$from_mail."\r\n" .'Reply-To: '.$reply_mail. "\r\n" .'X-Mailer: PHP/'.phpversion(); //'From', 'Reply-To' i 'X-Mailer'
//generisanje poruke
$message = "Tralala....";                
$mail = mail($email, $subject, $message, $headers); //slanje emaila
Dakle, kada sam generišeš mailove bitno je da ispoštuješ što veći broj kriterijuma kako bi obezbedio da mail zaista i stigne tamo za gde je namenjen

Kao prvo, nisi ispravno formirao zaglavlje. Kada formiraš zaglavlje prvo moraš da lepo navedeš "From" polje tj. ko je pošiljaoc. Druga stvar. Uvek stavljaj "Reply-to" polje jer kada ovo polje postoji u headeru mail serveru uglavnom bitno umanjuju spam koeficijent za takve mailove pa imaš znatno veće šanse da ne prođeš kao spam

Druga mogućnost je da je PHP na tvom serveru jednostavno isključen. Provuci server kroz jedan phpinfo() i pogledaj da li je PHP mailer aktiviran.

Dakle, uvek šalji kompletan set zaglavlja (upravo nešto kao ovo što sam ti ja napisao) i ne bi trebalo da imaš problema sa slanjem
holodoc je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku holodoc na korisnoj poruci:
mirk (10.6.2007)
Stara 9.6.2007, 23:30   #3
dbaja
Veteran
 
Avatar korisnika dbaja
 
Član od: 4.12.2005.
Poruke: 1.180
Zahvalnice: 50
Zahvaljeno 214 puta na 130 poruka
Određen forumom Re: neradi mail() funkcija

Proveri da li je skript dobio promenljive za koje si postavio POST funkcije?
Meni u jednom slucaju $ime = $_POST["korisnik"]; nije davalo rezultata dok nisam promenio u $ime = $_GET[korisnik];
Mozda u tvom slucaju nije imao sta ni kome da posalje.
dbaja je offline   Odgovor sa citatom ove poruke
Stara 9.6.2007, 23:41   #4
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: neradi mail() funkcija

Citat:
dbaja kaže: Pregled poruke
Proveri da li je skript dobio promenljive za koje si postavio POST funkcije?
Meni u jednom slucaju $ime = $_POST["korisnik"]; nije davalo rezultata dok nisam promenio u $ime = $_GET[korisnik];
Mozda u tvom slucaju nije imao sta ni kome da posalje.
Problem je u tome što ako se podaci prosleđuju putem HTML forme POST metodom u tom slučaju podaci uneti u nju mogu da se preuzmu samo $_POST superpromenljivom. $GET bi bila okej kada bi se prosleđivanje radilo recimo putem URI-ja tipa: http://www.nekidomen.com?ime=Hans&prezime=Milojkovic ili eksplicitnim navođenjem GET-a kao metode za prosleđivanje ali bi u tom slučaju podatke na ciljnoj stranici sadržala $_GET superpromenljiva.

S druge strane čak i da izostane prenos podataka iz izvorne forme tekst koji sačinjava sadržaj poruke bi bio samo prazan string pa bi primalac maila samo dobio mail bez ikakvog teksta Dakle, izostanak prolseđenih parametara nije kritičan po rad skripte. Problem je definitivno izostanak korektnog zaglavlja

Poslednja ispravka: holodoc (10.6.2007 u 13:48) Razlog: Ispravljena nebuloza sa $_POST i $_GET-om...
holodoc je offline   Odgovor sa citatom ove poruke
Stara 10.6.2007, 10:19   #5
urke
ex Laki pingvin
 
Avatar korisnika urke
 
Član od: 28.10.2005.
Lokacija: Kragujevac (Srbija)
Poruke: 2.559
Zahvalnice: 478
Zahvaljeno 880 puta na 488 poruka
Određen forumom Re: neradi mail() funkcija

Ovde je problem što čovek nije rekao da li ovo pokušava da uradi u lokalu ili na nekom web serveru. Jer, ako je na svojoj mašini, da bi mail() radio do kraja, treba da bude funkcionalan sendmail kako bi se poruka pripremljena za slanje uopšte otpremila na adresu primaoca, inače će ostati u /var/spool/clientmqueue.
urke je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku urke na korisnoj poruci:
mirk (10.6.2007)
Stara 10.6.2007, 12:38   #6
GoranKostic
Član
 
Član od: 15.6.2006.
Lokacija: Zajecar
Poruke: 185
Zahvalnice: 12
Zahvaljeno 24 puta na 21 poruka
Određen forumom Re: ne radi mail() funkcija

Ako radi u lokalu i pokusa da posalje mail, dobio bi gresku, sve dok ne podesi parametre u php.ini. Kod mene tako radi, s tim sto sam u php.ini podesio da salje preko sezama (xampp paket na Windowsu inace) , obzirom da se konektujem na net preko sezama, cisto kao test faza. Pre bih rekao da je problem u hederima emaila, kao sto je i holodoc rekao.

@holodoc

Cak iako se podaci preuzimaju iz HTLM forme, ako je u formi receno da se salju GET metodom, sa GET se moraju i preuzeti, ne sa $_POST, a ako se salju sa POST, onda moraju da se preuzmu sa $_POST ili sa $_REQUEST da prihvati podatke poslate bilo GET bilo POST metodom iz html forme.

Poslednja ispravka: GoranKostic (10.6.2007 u 12:41) Razlog: dodatak poruci
GoranKostic je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku GoranKostic na korisnoj poruci:
holodoc (10.6.2007)
Stara 10.6.2007, 13:38   #7
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: ne radi mail() funkcija

Hm... Ali u tom slučaju bi dobio poruku od PHP-a recimo sledeće sadržine
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in...
@mirk
Daj malo više podataka o tome gde ti se nalazi server, da li imaš neki mail klijent instaliran, MTA (postfix, sendmail...) ili nešto slično i na kojoj platformi isprobavaš skriptu (Linux, Windows, UNIX).

@Goran Kostic
Lepo sam ja zamislio odgovor ali sam se negde upola pogubio Potpuno si u pravu za $_GET preko forme ali eto... Ispravio sam prvi post da se ne sramotim

Poslednja ispravka: holodoc (10.6.2007 u 13:57)
holodoc je offline   Odgovor sa citatom ove poruke
Stara 10.6.2007, 13:59   #8
urke
ex Laki pingvin
 
Avatar korisnika urke
 
Član od: 28.10.2005.
Lokacija: Kragujevac (Srbija)
Poruke: 2.559
Zahvalnice: 478
Zahvaljeno 880 puta na 488 poruka
Određen forumom Re: ne radi mail() funkcija

Da se razumemo: http://www.php.net/manual/en/function.mail.php

Dakle, ako u test.php stavimo ovo:
PHP kod:
<?php
mail
('ja@domen.rs''Moja tema''Moja probna poruka');
?>
i otvorimo tu stranu, na adresu ja@domen.rs će biti poslata ta poruka ukoliko mail daemon na serveru gde je test.php aktivan i dobro konfigurisan.

Ono što je u primeru koji je mirk dao je ovaj detalj: "From: hehehe"
Jednostavno, to tako NE MOŽE, pa ili to skloni, ili stavi adresu u skladu sa RFC822 standardom.

Poslednja ispravka: urke (10.6.2007 u 18:49)
urke je offline   Odgovor sa citatom ove poruke
Stara 10.6.2007, 15:00   #9
mirk
Član
 
Član od: 13.10.2006.
Poruke: 172
Zahvalnice: 4
Zahvaljeno 4 puta na 4 poruka
Određen forumom Re: ne radi mail() funkcija

Skriptu sam stavio na hosting 1111mb.com i pročitao sam da podržava php. Nažalost server je već par dana nedostupan.
mirk je offline   Odgovor sa citatom ove poruke
Stara 10.6.2007, 16:37   #10
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: ne radi mail() funkcija

Citat:
mirk kaže: Pregled poruke
Skriptu sam stavio na hosting 1111mb.com i pročitao sam da podržava php. Nažalost server je već par dana nedostupan.
Podržavanje PHP-a ne mora da znači da je podržano i slanje mailova. Free hosting je uvek problematičan u smislu da će uvek iskočiti neka glupost da ti pravi probleme a i nisi nikad siguran šta sve radi i kakva su podešavanja.

Probaj ovo. Napravi skriptu pod imenom phpinfo.php koja će da sadrži sledeće linije:
PHP kod:
 <?
phpinfo();
?>
i pogledaj da li na stranici koja će da ti se otvori napisano da je podrška za slanje mailova uključena.
holodoc je offline   Odgovor sa citatom ove poruke
Stara 6.10.2007, 10:53   #11
ColdKeyboard
Novi član
 
Član od: 4.6.2007.
Lokacija: Brcko, BIH
Poruke: 9
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Slanje poruke preko MSN-a korisniku ColdKeyboard
Određen forumom Re: [PHP] Ne radi mi mail() funkcija

Mnogi free hosting serveri pa cak i placeni hosting server ne podrzava mail() funkciju bez predhodne autorizacije iz razloga sto moze da se koristi za prevare i spamovanje tako da stvara probleme i hosting kompaniji a i korisniku.

Ako ti treba da koristis mail funkciju na sajtu najbolje ti je da skines PHPmailer klasu i lijepo koristis nju za slanje mailova. Ona ce da se loguje na SMTP server sa username i password koji posaljes i poslat ce email bez problema. Ako nemas mail server podesen na svom hostu mozes da koristis i hotmail yahoo Gmail ili bilo koji drugi free email servis.
ColdKeyboard je offline   Odgovor sa citatom ove poruke
Stara 6.10.2007, 10:56   #12
Deusdies
Starosedelac
 
Član od: 9.11.2005.
Lokacija: bo@galaxy: ~$
Poruke: 1.554
Zahvalnice: 54
Zahvaljeno 439 puta na 215 poruka
Slanje poruke preko AIM-a korisniku Deusdies Slanje poruke preko MSN-a korisniku Deusdies Slanje poruke preko Skypea korisniku Deusdies
Određen forumom Re: [PHP] Ne radi mi mail() funkcija

Citat:
Ako ti treba da koristis mail funkciju na sajtu najbolje ti je da skines PHPmailer klasu i lijepo koristis nju za slanje mailova. Ona ce da se loguje na SMTP server sa username i password koji posaljes i poslat ce email bez problema. Ako nemas mail server podesen na svom hostu mozes da koristis i hotmail yahoo Gmail ili bilo koji drugi free email servis.
Međutim, ako free hosting serveri ograničavaju mail() funkciju (a ograničavaju je), takođe 99% free hosting servera pored POP3 naloga nemaju i besplatan SMTP nalog.
Deusdies je offline   Odgovor sa citatom ove poruke
Stara 6.10.2007, 16:00   #13
VojaM
Ad Ministrator
 
Avatar korisnika VojaM
 
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
Određen forumom Re: [PHP] Ne radi mi mail() funkcija

Citat:
mirk kaže: Pregled poruke
Radim jedan program u php-u koji šalje ime i prezime na e-mail adresu. Ime i prezime se prvo ukucaju u html formi koja šalje te podatke php skripti te php skripta treba ime i prezime poslati na određenu e-mail adresu. Sad upišem ime i prezime odem pošalji i nema nikakvih upozorenja, ali kad pogledam sandučić nema nikakvog mail-a. Neznam stvarno u čem je problem.
Imaj u vidu i sledeće. Praktično svi skriptovi koji šalju mail (pisani u php-u ili perlu) instalirani su kao moduli http servera (obično Apache). Kod SMTP protokola slanja postoji, uz pošiljaoca iz From: zaglavlja, i tzv. Sender, a to je adresa korisnika ili procesa koji u stvari šalju poruku. Kada koristiš program za mail tipa Thunderbird, Sender se automatski postavlja tako da je isti kao From: zaglavlje, ali kad je u pitanju slanje preko modula Apachea, sender je obično apache@<ime domena>. Neki SMTP serveri zbog sigurnosti uopšte ne dozvoljavaju slanje email poruka korisnika apache. To može biti i lokalni smtp server na računaru gde stoji prezentacija, a i neki od servera provajdera onoga ko prima poruku.
VojaM je offline   Odgovor sa citatom ove poruke
Stara 6.10.2007, 17:01   #14
VojaM
Ad Ministrator
 
Avatar korisnika VojaM
 
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
Određen forumom Re: [PHP] Ne radi mi mail() funkcija

Ako je na serveru instaliran standardni programski paket za rad sa malilom zvani Sendmail (a tako je u mnogo slučajeva), onda je php funkcija mail() obično tako konfigurisana da poziva komandu za slanje email poruke u formatu sendmail -i. SMTP protokol podrazumeva i to da se pre samog teksta poruke šalju izvesne komande. Ono što ljudi obično ne znaju jeste da ono što piše u zaglavljima ne mora biti isto kao i ono što se daje SMTP-u kao parametar, recimo parametar From:. Zbog toga se obično prilikom slanja poruka putem nekog skripta koristi -i koji kazuje Sendmailu da sve potrebne parametre po pitanju pošiljaoca i primaoca uzme iz zaglavlja, što se inače ne radi, i time se eliminiše jedna od komplikacija prilikom programiranja.

Međutim, problem sa parametrom Sender i dalje ostaje. Kada poruku šalje neki korisnik mail servera, recimo kod provajdera, kao adresa Sendera uzima se korisničko ime onoga ko šalje poruku sa dodatkom domena samog servera tj. provajdera. To u velikom broju slučajeva ispadne isto što piše u zaglavlju From:. Međutim, kada poruku šalje php ili perl funkcija preko http servera Apache, sender je "korisnik" pod čijim UID brojem radi Apache, a to je obično baš apache. Zato je potrebno "forsirati" sendera tako da bude nešto što odgovara sajtu s koga se šalju poruke, recimo webmaster@mojdomen.com a to se radi dodavanjem parametra -f <adresa sendera> pri pozivu sendmaila. Dakle, komanda bi bila, recimo,
sendmail -i -f webmaster@pera.co.yu

Web administratori često zabranjuju korisniku apache da šalje email poruke kako bi naterali webmastere da pomoću parametra -f promene Sendera u nešto što asocira na njihov web sajt. Na taj način administrator može da identifikuje odakle stižu eventualni problemi (ili, koji je sajt nedajbože, "provaljen"), što ne bi mogao ako bi emailovi sa svih sajtova na serveru imali istog Sendera.

Na kraju, ja ne znam da li standardna php f-ja mail() podržava parametar -f, ali trebalo bi da podržava. Takođe ne znam ni u kom se formatu to šalje. Ako funkcija to ne podržava, mora se napisati sopstvena funkcija koja će se baviti slanjem emaila. Pade mi na pamet da se parametar -f može dodati ispred imena primaoca. Pošto su u pitanju obični stringovi, kada se sve sklopi u jedan string, dobije se poziv programa sendmail u željenom formatu (valjda).

Sve vreme namerno izbegavam da prevedem "sender" kao "pošiljalac" kako bih izbegao zbrku. Dakle, From: je adresa koju je korisnik upisao kao svoju u mail klijentu, recimo u Thunderbirdu. Sender: je adresa koja se automatski pravi u procesu slanja email poruke putem protokola SMTP i sastoji se iz imena vlasnika "procesa" koji šalje poruku (u kućnim uslovima - username s kojim se korisnik loguje kod provajdera, u web uslovima - vlasnik procesa koji vrši slanje poruke, obično apache) kojem se pridodaje domen http servera.
VojaM je offline   Odgovor sa citatom ove poruke
Stara 6.10.2007, 17:01   #15
VojaM
Ad Ministrator
 
Avatar korisnika VojaM
 
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
Određen forumom Re: [PHP] Ne radi mi mail() funkcija

Adresa Sendera koristi se za vraćanje poruke o grešci u slučaju da poruka iz nekog razloga ne može da se isporuči i zamenjuje nekadašnje zaglavlje Errors-To:. Kako se generiše automatski prilikom slanja poruke, teže se lažira i tako se sprečava jedan od vidova spamovanja koji se sastoji u namernom slanju gomile poruka na pogrešnu adresu, sve u cilju da se sve odbijene poruke vrate na Errors-To: adresu poput lavine i izazovu zagušenje (Denial of Servce), ili nešto slično.
VojaM je offline   Odgovor sa citatom ove poruke
Stara 6.10.2007, 17:04   #16
VojaM
Ad Ministrator
 
Avatar korisnika VojaM
 
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
Određen forumom Re: [PHP] Ne radi mi mail() funkcija

Celo ovo moje pisanije je da se ljudi malko upoznaju s tim kako stvari funkcionišu. Takođe, zgodno je imati i ovo na umu (neophodnost forsiranja Sender adrese) u slučaju ako hosting, po svemu sudeći, podržava funkciju mail(), ali poruke ipak ne idu.
VojaM je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Kako podesiti ISDN da radi na 128 kbps jaba.hut Internet usluge 7 31.5.2007 11:54
opera mail JovanK Aplikativni softver 6 10.2.2007 22:26
Nesto ne radi a ja ne znam sta bofi Kvarovi 21 15.2.2006 3:01
kako da posaljem mail na svoj tel? Vorador Aparati i oprema 10 24.1.2006 21:12
Problem sa mp3 playerom? Na nekom XP-u radi na nekom ne... Master Neo Foto i audio/video 7 5.1.2006 2:42


Sva vremena su po Griniču +2 h. Sada je 20:05.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com