[ niksa @ 03.12.2003. 17:10 ] @
Da ki neko zna na koji nacin mogu da saljem poruke u PHP-u preko sendmaila, ali ne preko standardne mail() funkcije?

Ja sam probao (pronasao sam na php.net):

$announce_subject = "Message From Our Web Site";
$announce_from_email = "[email protected]";
$announce_from_name = "Our Site";
$announce_to_email = "[email protected]";
$body = "Announcement. Our site has a special offer today. Please visit. Thank you.";
$MP = "/usr/sbin/sendmail -t -f $announce_from_email";

$fd = popen($MP,"w");
fputs($fd, "To: $announce_to_email\n");
fputs($fd, "From: $announce_from_name <$announce_from_email>\n");
fputs($fd, "Subject: $announce_subject\n");
fputs($fd, "X-Mailer: PHP4\n");
fputs($fd, $body);
pclose($fd);

ali ovo nece kod mene da radi, mijenjao sam razne putanje do sendmail-a, ali nista!

Osnovni problem je u vrijednosti za "RETURN-PATH", majmuni setovali na serveru da je za svaki e-mail ta vrijednost neka bezvezna e-mail adresa na domenu KOJI NE POSTOJI i onda tu poruku vecina ISP-a odbija, nece da je primi, a to mi stvara veliki problem!

Znaci, na ovaj nacin
"/usr/sbin/sendmail -t -f $moja_adresa"
hocu da promijenim vrijednost za RETURN_PATH!

Ovo sa -f isto mogu da uradim i sa funkcijom mail(), ali ako koristim PETI element, ali ni to ne moze, ukljucili su SAFE MODE i nije dozvoljeno koristenje petog elementa u funkciji mail()!

Ovo veoma lako rijesim u Perl-u, ali u PHP-u ne mogu da pronadjem rijesenje!

Da li neko ima rijesnje za ovaj problem?

[ markom @ 03.12.2003. 17:41 ] @
Jesi li probao da se vežeš na SMTP server preko socketa?


Marko.
[ aruena @ 04.12.2003. 07:28 ] @
Ako zelis u headeru email-a da dobijes return-path to ne moze sa obicnom mail() funkcijom.
Ovo radi sigurno zakacis se na smtp server preko socketa i saljes mailove rfc komandama. Mozes da imas jednu email adresu u return pathu-a u drugu u from ako ti to dogovara.
$fp=fsockopen("TVOJ SMTP SERVER",25);
if(!$fp) {
echo "The connection failed";
exit;
}
fputs($fp,"MAIL FROM: [email protected]\r\n"); //ovo ce ti biti u return-pathu
fputs($fp,"RCPT TO: [email protected]\r\n");
fputs($fp,"DATA\r\n");
fputs($fp, "Content-type: text/html; charset=iso-8859-1\r\n");//header ako hoces da pravis html mail
fputs($fp, "To [email protected]\nFrom: [email protected]\nSubject: PROBA\n\n\n TEXT EMAILA \n\n");
fputs($fp,".\r\n");
fputs($fp,".\r\n");
fputs($fp,"QUIT\r\n");
fclose($fp);

Pozdrav
[ niksa @ 06.01.2004. 02:38 ] @
Nece nikako ovo da radi! Samo sam mijenjao SMTP,[email protected],[email protected],[email protected],[email protected]!!
Ne znam zasto nece da radi!
[ Dejan Krstic @ 06.01.2004. 11:49 ] @
Citat:
aruena:
Ako zelis u headeru email-a da dobijes return-path to ne moze sa obicnom mail() funkcijom.
Ovo radi sigurno zakacis se na smtp server preko socketa i saljes mailove rfc komandama. Mozes da imas jednu email adresu u return pathu-a u drugu u from ako ti to dogovara.
$fp=fsockopen("TVOJ SMTP SERVER",25);
if(!$fp) {
echo "The connection failed";
exit;
}
fputs($fp,"MAIL FROM: [email protected]\r\n"); //ovo ce ti biti u return-pathu
fputs($fp,"RCPT TO: [email protected]\r\n");
fputs($fp,"DATA\r\n");
fputs($fp, "Content-type: text/html; charset=iso-8859-1\r\n");//header ako hoces da pravis html mail
fputs($fp, "To [email protected]\nFrom: [email protected]\nSubject: PROBA\n\n\n TEXT EMAILA \n\n");
fputs($fp,".\r\n");
fputs($fp,".\r\n");
fputs($fp,"QUIT\r\n");
fclose($fp);

Pozdrav


Al si ti nekulturan :)

Ovaj kod nema sanse da radi jer ce skoro svaki SMTP server cim mu posaljes onu prvu MAIL FROM komandu odbiti to i reci "Say hello first" :)

Dakle, na pocetak treba fputs($fp, "HELO taj-i-taj\r\n");

Code:

220 gsmmex.063.mobtel.com ESMTP << Welcome to MOBTEL >> Tue, 6 Jan 2004 12:44:15
 +0100
mail from: <[email protected]>
503 5.0.0 Polite people say HELO first
[ Dejan Krstic @ 06.01.2004. 11:56 ] @
Jos nesto. Treba se malo potruditi a ne samo kukati "nece da radi". Treba videti zasto nece da radi i ovde reci nesto vise a ne samo "imam skriptu takvu i takvu i nece da radi".

Gde? Koji provajder? Koji smtp? Da li smtp dozvoljava relaying? Mozda treba user i password....

Gomila informacija je potrebna a mi ovde bez ikakve informacije raspravljamo.....
[ _owl_ @ 06.01.2004. 14:27 ] @
Ako radis preko socketa ne samo sto mozes da pises po socketu nego gle cuda mozes i da citas. A da cudo bude jos vece posle svake komande SMTP server treba da vrati status izvrsenja komande (3 bajta), jednos spejs i poruku o rezultatu izvrsenja komande. Sada kada znas sve ovo mozes u kodu dodati deo koji uzima ove informacije sa servera i videti tacno koju ti gresku server prijavljuje. Ako nijedna komanda ne prouzrokuje gresku onda kontaktiraj admin-a SMTP servera i vidi sta ne valja.
[ Dejan Krstic @ 06.01.2004. 15:22 ] @
Pa moze ili to ili jos jednostavnije da uradi copy onog sto bi njegov program poslao smtp serveru i da pastuje to u terminal window u kom mu je otvoren telnet smtp.server 25 i vidi sta ce server da mu kaze :)

Problem je sto veliki broj hosting provajdera ne dozvoljava koriscenje socket funckija (Verat npr) ali mi ne znamo da li je u tome problem posto covek uopste nije rekao u cemu je problem nego samo "nece da posalje" a vi sad gledajte u pasulj pa mu pomozite da resi problem :)
[ niksa @ 06.01.2004. 19:42 ] @
U pitanju je jedan strani host koji nije toliko poznat pa ga zbog toga i ne pominjem, ali on zahtjeva autentifikaciju i za SMTP, to sigurno znam, mozda je u tome problem? Inace, nije mi sada potrebno da maskiram RETURN-PATH (ako idem preko SMTP-a)!
Nikako da pronadjem adekvatno rijesenje!! Na net-u sam ja prije bio pronasao jedan kod koji je radio, ali gasada nikako ne mogu ponovo pronaci, trazio sam satima!
[ _owl_ @ 06.01.2004. 20:00 ] @
Citat:
Dejan Krstic:
Pa moze ili to ili jos jednostavnije da uradi copy onog sto bi njegov program poslao smtp serveru i da pastuje to u terminal window u kom mu je otvoren telnet smtp.server 25 i vidi sta ce server da mu kaze :)

Problem je sto veliki broj hosting provajdera ne dozvoljava koriscenje socket funckija (Verat npr) ali mi ne znamo da li je u tome problem posto covek uopste nije rekao u cemu je problem nego samo "nece da posalje" a vi sad gledajte u pasulj pa mu pomozite da resi problem :)

To mozda moze kada ti provajder istovremeno nudi i hosting ali kada to nije slucaj onda se mozda uzima u obzir i IP sa koga se konektuje na server.
Na Veratu ne radi fsockopen na port 80, a kao na ostale radi (ustvari sigurno radi kada se povezujes na njihov SMTP).
[ Dejan Krstic @ 06.01.2004. 20:14 ] @
Citat:
niksa:
U pitanju je jedan strani host koji nije toliko poznat pa ga zbog toga i ne pominjem, ali on zahtjeva autentifikaciju i za SMTP, to sigurno znam, mozda je u tome problem?


Ma neeeeeeeee................ :)

@_owl_

Kada sam rekao provajder mislio sam na hosting provajdera.
[ niksa @ 07.01.2004. 00:07 ] @
Ali u ovom slucaju ipak hocu da probam SMTP na istom serveru!! Znaci, server je jedan te isti i hosting i SMTP, a jedan od IP adresa servera je "207.44.212.2", on je u vlasnistvu poznate hosting kompanije, ali ga je iznajmila jedna druga kompanija koja je mnogo manje poznata!
[ aruena @ 08.01.2004. 10:18 ] @
Izvinjavam se sto sam nekulturna.
Sa fgets() hvatas greske.
Ovaj IP ne dozvoljava relay email.

fputs($fp,"MAIL FROM: [email protected]\r\n");
echo fgets($fp,512);
echo "<br>\n";
Probaj nemam bas vremena da sve testiram.