|
Serverske aplikacije i baze podataka PHP, Perl, ASP, ASP .NET, ColdFusion... MySQL, PostgreSQL, MSQL, Oracle... |
|
Alatke vezane za temu | Vrste prikaza |
9.6.2007, 20:50 | #1 |
Član
Član od: 13.10.2006.
Poruke: 172
Zahvalnice: 4
Zahvaljeno 4 puta na 4 poruka
|
[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"); ?> |
9.6.2007, 21:29 | #2 |
Deo inventara foruma
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
|
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 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 |
Sledeći korisnik se zahvaljuje korisniku holodoc na korisnoj poruci: | ||
mirk (10.6.2007) |
9.6.2007, 23:30 | #3 |
Veteran
Član od: 4.12.2005.
Poruke: 1.180
Zahvalnice: 50
Zahvaljeno 214 puta na 130 poruka
|
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. |
9.6.2007, 23:41 | #4 | |
Deo inventara foruma
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
|
Re: neradi mail() funkcija
Citat:
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... |
|
10.6.2007, 10:19 | #5 |
ex Laki pingvin
Član od: 28.10.2005.
Lokacija: Kragujevac (Srbija)
Poruke: 2.559
Zahvalnice: 478
Zahvaljeno 880 puta na 488 poruka
|
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.
|
Sledeći korisnik se zahvaljuje korisniku urke na korisnoj poruci: | ||
mirk (10.6.2007) |
10.6.2007, 12:38 | #6 |
Član
Član od: 15.6.2006.
Lokacija: Zajecar
Poruke: 185
Zahvalnice: 12
Zahvaljeno 24 puta na 21 poruka
|
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 |
Sledeći korisnik se zahvaljuje korisniku GoranKostic na korisnoj poruci: | ||
holodoc (10.6.2007) |
10.6.2007, 13:38 | #7 |
Deo inventara foruma
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
|
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) |
10.6.2007, 13:59 | #8 |
ex Laki pingvin
Član od: 28.10.2005.
Lokacija: Kragujevac (Srbija)
Poruke: 2.559
Zahvalnice: 478
Zahvaljeno 880 puta na 488 poruka
|
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:
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) |
10.6.2007, 15:00 | #9 |
Član
Član od: 13.10.2006.
Poruke: 172
Zahvalnice: 4
Zahvaljeno 4 puta na 4 poruka
|
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.
|
10.6.2007, 16:37 | #10 | |
Deo inventara foruma
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
|
Re: ne radi mail() funkcija
Citat:
Probaj ovo. Napravi skriptu pod imenom phpinfo.php koja će da sadrži sledeće linije: PHP kod:
|
|
6.10.2007, 10:53 | #11 |
Novi član
|
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. |
6.10.2007, 10:56 | #12 | |
Starosedelac
|
Re: [PHP] Ne radi mi mail() funkcija
Citat:
|
|
6.10.2007, 16:00 | #13 | |
Ad Ministrator
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
|
Re: [PHP] Ne radi mi mail() funkcija
Citat:
|
|
6.10.2007, 17:01 | #14 |
Ad Ministrator
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
|
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. |
6.10.2007, 17:01 | #15 |
Ad Ministrator
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
|
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.
|
6.10.2007, 17:04 | #16 |
Ad Ministrator
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
|
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.
|
Bookmarks sajtovi |
Alatke vezane za temu | |
Vrste prikaza | |
|
|
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 |