[ pac_man_clone @ 27.09.2007. 14:59 ] @
Za sajt koji se nalazi na besplatnom hostingu potrebno je napraviti kontakt formular. Tu se javlja problem jer je zbog spama mail( ) funkcija iskljucena. Znaci potrebno je neka zamena ove funkcije odnosno nesto sto na eksterni nacin radi isto sto i ova funkcija.

Ja sam probao da iskoristim gmail kao eksterni SMTP server i class.phpmailer.php ali nisam uspeo nista da uradim.

Molim za pomoc u reseavanju ovog problema ili ideju za resenje.
Obican mailto: link i promena hostinga trenutno nisu prihvatljive opcije.

Unapred hvala.
[ Miroslav Ćurčić @ 27.09.2007. 16:30 ] @
http://www.elitesecurity.org/p1584474
http://www.elitesecurity.org/p1529721
[ pac_man_clone @ 27.09.2007. 21:28 ] @
Hvala na pomoci. Zadatak uspesno resen.
Koristio sam http://www.swiftmailer.org/ i gmail za SMTP. Ova kombinacija odlicno funkcionise ali je dokumentacija za swiftmailer prilicno konfuzna pa sam se poprilicno namucio dok nisam isceprkao ono sto mi je bilo potrebno. Ovde ostavljam kod koji sam koristio, mozda pomogne jos nekome.
Code:

//Load in the files we'll need 
require_once "lib/Swift.php"; 
require_once "lib/Swift/Connection/SMTP.php"; 
require_once "lib/Swift/Authenticator/LOGIN.php"; 

  
//Start Swift 
//$conn->attachAuthenticator(new Swift_Authenticator_LOGIN()); 

$smtp =& new Swift_Connection_SMTP("smtp.gmail.com", SWIFT_SMTP_PORT_SECURE, SWIFT_SMTP_ENC_TLS); 
$smtp->attachAuthenticator(new Swift_Authenticator_LOGIN()); 
$smtp->setUsername("upisati_gmail_korisnicko [email protected]"); 
$smtp->setPassword("upisati_lozinku"); 
$smtp->setTimeout(20); 

$swift =& new Swift($smtp);

//Create the message 
$message =& new Swift_Message("ovde_ide_subject_poruke","ovde_ide_body_poruke"); 
  
//Now check if Swift actually sends it 
if ($swift->send($message, "upisati_adresu_za_primanje_poruka", "upisati_adresu_za_replay_poruke")) 

echo "<p>Poruka uspe&scaron;no poslata.</p>";
     $swift->disconnect(); 

else
{
echo "<p>Gre&scaron;ka u slanju!</p>";
}
[ Nemanja Avramović @ 27.09.2007. 21:56 ] @
off: Dokumentacija SwiftMailer-a ti je konfuzna? Kakva je onda dobra dokumentacija? Lično bolju dokumentaciju (pored PHP-ove) od Swift-a nisam video...
[ pac_man_clone @ 27.09.2007. 22:31 ] @
Prijatelju svi smo mi razliciti i razlicito razmisljamo. Ono sto je za tebe odlicno to za mene moze da bude konfuzno i tesko za snalazenje i obrnuto. To je samo moje misljenje i nije toliko bitno, koliko je bitno da je posao uspesno zavrsen. Sto se tice dokumentacije za PHP slazem se sa tobom da je odlicna i nikad nisam imao problema da u njoj nesto pronadjem.
Inace ako si znao i mogao da pomognes trebao si da se javis ranije, sada je sve gotovo.
[ dakipro @ 28.09.2007. 07:24 ] @
Iskreno, mene je i mrzelo da ti otkucam da u google kucas "php free mailer gmail" i na prvom mestu bi dobio swift.
Mislim da je to glavni razlog zasto ti je samo mVeliki dao odgovor i niko drugi se nije javio.
Inace, takodje mislim da je swift dokumentacija sasvim solidna sa dobrim tutorijalima. Cak i na swift wikiju si samo trebao da otkucas gmail u pretrazi, i dobio bi stranice sa uputsktvima kako da se nakacis na gmail. A da ne pricam o tome sta bi dobio da si na es-u ukucao mailer u php forumu...
Ne vole ljudi da vide da je neko lenj, i mrzi ga da koristi pretragu
To je uglavnom razlog zasto se malo ljudi odazove na temu, cisto da znas za ubuduce
[ pac_man_clone @ 28.09.2007. 14:37 ] @
Iskreno vise nisam znao sta da otkucam u google i kako se zove to sto trazim. Ono sto sam ipak pronasao nije mi dalo zadovoljavajuce rezultate pa sam zamolio za pomoc na ovom forumu.
Iskreno sto se popularnosti tice znam da ovo nije utakmica ili rok koncert i da je ovo materija koju poznaje manji broj ljudi tako da nisam ni ocekivao veliki broj poruka, pre sam ocekivao da ce mi neko odgovoriti tek nakon nekoliko dana. Na moju srecu odgovor mVelikog je bio brz, dovoljan i tacno me uputio na ono sto sam trazio (ovom prilikom mu se jos jednom zahvaljujem). Tako i da je i taj jedan post bio dovoljan.
Iskreno nisam ocekivao ovakvu reakciju iskusnijih clanova foruma i to narocito nakon uspesno resenog problema. Mislim da za ovakvim reakcijama nije bilo potrebe, jer ako se sad javljate da ste mogli da pomognete a niste to ipak malo vise govori o vama. Ja se ne stidim da zatrazim pomoc kad nesto ne znam ali uvek sam spreman da podelim sa drugima ono sto znam.
Iskreno necu vise postovati ovde i sledeci put pomoc cu potraziti na drugom mestu.
[ dakipro @ 28.09.2007. 14:56 ] @
Pazi, u tvom slucaju nije problem to sto nisi mogao da posaljes mail drugom metodom, vec sto si bio spreman da cekas par dana da ti neko odgovori... postoji jedna poslovica, mislim da je jedan clan drzi u svom postu: "I'm here to help. But i will not catch you the fish, I will teach you how to catch it.".
Dakle, najlakse je pitati da ti neko da gotovo resenje, umetnost je sam pronaci ga ;) To je ono sto bi trebao da naucis, a ne kako se alternativno salje mail (takodje kriterijum za pretragu na google "alternate mail php" koji ti odma daje phpmailer kao resenje). Takodje krsis pravilnik, tako da je normalno ocekivati ovakvu reakciju (to nam je u opisu zaduzenja na forumu).
Nista licno, veruj, tako treba za tvoje dobro ;)
[ kelja @ 28.09.2007. 18:07 ] @
Dobro Dalibore,
ali ipak su neki moderatori (pre)brzi kad treba lock-ovati i mudrovati o tudjoj lenjosti i neznanju.
Ovo se ne odnosi na tebe. :)
Za one koji se groze register_globals off i slicnih problema, postoji podforum advanced php.
Na nekim velikim stranim sajtovima SVAKI dan ces videti teme prezvakane vec 1000 puta, ali te teme koje su nekome vec dosadne i iritirajuce, potpuno su nove za nekoga ko TEK pocinje da se bavi php-om.
Bilo bi lepo kad bi postojalo razumevanje od strane moderatora za tu prostu cinjenicu .

A meditacije(koristim eufemizam umesto mnogo adekvatnijeg termina) o tome sta je tesko, a sta lako, sta pregledno, a sta konfuzno, nesto su sto bas i ne doprinosi podizanju kvaliteta foruma.
U tom smislu je i ovo sto sam ja napisao cisto s*****, pa eto... moze Nemanja da zakljuca temu. :)
[ Nemanja Avramović @ 28.09.2007. 19:02 ] @
Pa pošto ste otišli u offtopic, mogao bih

Pretpostavljam da na mene misliš kad kažeš da sam (pre)brz kada nešto treba lockovati (za mudrovanje nisam ni primetio da nešto previše mudrujem )... šta da ti kažem, nisam ja to izmislio, samo sam pratio kako drugi (mo)deratori rade, pa sam se ugledao na njih

Kad smo već kod register_globals: Neko ko hoće ozbiljno da se bavi PHPom mora da prođe kroz PHP manual. Mislim, ne mora, ali red je da to uradi jer nije manual pisan za džabe, već baš tamo stoje odgovori na najčešće postavljana pitanja. Dalje, taj isti neko, pre nego što postavi pitanje na ovom forumu, mogao bi da prelista topovane teme, jer ne stoje one bez veze iznad svih ostalih tema, a koliko se sećam, tamo ima objašnjenje problema vezanog za register_globals, kao i rešenje istog.
[ Miroslav Ćurčić @ 28.09.2007. 19:45 ] @
@pac_man_clone: "nisam ocekivao ovakvu reakciju" - a kakvu to reakciju? Dalibor ti je lepo objasnio da ćeš pretragom pre rešiti svoj problem nego čekajući odgovor na forumu. Primeti da sam ti i ja dao odgovor u formi po kojoj vidiš da je ta tema već bila obrađivana umesto da sam samo napisao "idi na njihov sajt, skini komponentu i upotrebi". Uvek se treba setiti onoga: šta god da mi padne na pamat da pitam na netu, verovatno je već neko pitao. Što se tiče onoga "ako si znao i mogao da pomognes trebao si da se javis ranije" niko na forumu nije dužan da odgovara na pitanja, moderatori su tu samo da održavaju red. Sve je to stvar dobre volje svih nas. I ja sam jednom bio početnik, pitao svašta na forumima, nije bilo lako, zato sad koristim priliku da olakšam i pomognem novajlijama. Dakle, radi svih nas, potrudi se prvo proveriti dali je ovde neka tema već obrađena da ne bi zatrpavali forum ponovljenim temama, i tebi samom će kasnije biti preglednije browsovanje forumom ako nema takvih tema. Pitaj i dalje ako te nešto zanima, nadam se da niko nije uvređen.

@svima: primetio sam i ja da se neke teme prebrzo zaključavaju, ne znam čemu tolika žurba, ako je u pitanju smanjivanje sql baze zašto se onda ne omogući brisanje teme. Ako je u pitanju održavanje kvaliteta foruma, onda... Pa zato imamo (zapostavljeni) AdvancedPHP forum, ovaj je valjda i namenjen početnicima (s bajatom literaturom ).

@Nemanja: što se tiče register_globals, mislim da bi bilo najispravnije da takve teme odmah obrišeš (održavaš kvalitet) nije bitno ako neko već odgovorio, i u pratećem emailu postavljaču daš link na top-temu gde je taj problem objašnjen (odgovorio čoveku).
[ ksrele @ 14.10.2007. 21:17 ] @
Probao sam Swift sciptu i imam problema.
Pratio sam dokumentaciju (necu da se mesam u prepirku oko toga) i nisam nasao nista o ovoj greski.
Pogledajte prilozenu sliku pa ako mozete pomozite.
Hosting je na www.extra.hu, da li je moguce da su oni zabranili koriscenje fsockopen() funkcije???
Ako je to problem, kako drugacije da saljem mailove sa sajta? Funkcija mail() isto daje neke greske, tj vrati false odgovor iako je do pre jedan dan radila, mozda su i nju iskljucili krelci.
[ Miroslav Ćurčić @ 15.10.2007. 08:12 ] @
Funkcija phpinfo() će ti dati odgovor šta je sve zabranjeno.
Za "smoke test" si mogao odabrati neki SMTP server kome ne treba autentifikacija, moguće da ne uspeva da se uloguje na gmail nalog.
Inače na njihovom sajtu imaš i link ka forumu za pomoć korisnicima.
[ ksrele @ 15.10.2007. 13:10 ] @
OK, pogledacu forum.
Sto se tiche fsockopen() funkcije, naravno da je isljucena., ali sam nasao nesto zanimljivo u phpinfo ispisu.
Sta znachi ovo i kako se moze iskoristiti?
[ ksrele @ 15.10.2007. 22:13 ] @
fsockopen() is disabled for security reasons... :(
A mail() ima dnevno ogranicenje po svemu sudeci, i to veoma malo 10-15 mailova.
Na kraju mi ne preostaje nista osim da trpam sve mailove koji nisu poslati u bazu pa da se citaju odatle, malko je glupavo ali sta cu kada ne moze drugacije...
[ Miroslav Ćurčić @ 16.10.2007. 20:18 ] @
Sta znachi ovo i kako se moze iskoristiti?
"Path to sendmail" označava lokaciju mejl servera kome će se obratiti funkcija mail() pri prosleđivanju pošte. Mail() je jednostavno prosleđivač pošte ka pravom mejl-serveru.
Ova stavka (trebalo bi da) je identična sa "sendmail_path".
Ne možeš ovo iskoristiti.

Mada, sad mi je nešto sinulo, probaj da na početku skripta preko ini_set() promeniš taj "Path to sendmail" i probaš da "ubodeš" lokaciju sendmail-a (recimo: /usr/sbin/sendmail -t -i).

Takođe u Swift-u možeš probati da uspostaviš konekciju klasom Swift_Connection_Sendmail. Njom bi postigao ovo isto - konekcija direktno na sendmail skript a putanju do skripta proslediš u konstruktoru.
[ ksrele @ 16.10.2007. 21:02 ] @
Hmmm, jedna stavka iz PHPinfo-a:
Code:
disable_functions:ini_set pfsockpen getrusage set_time_limit leak listen alter_ini virtual mysql_list_dbs mysql_pconnect 
mysql_create_db mysql_drop_db mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_db_name phpcredits 
php_logo_guid zend_logo_guid php_sapi_name php_uname exec system passthru proc_open shell_exec getmyuid getmygid 
getmypid getmyinode get_current_user ini_restore dl pclose popen fsockopen pfsockopen syslog openlog fopenstream chroot 
chown chgrp disk_free_space disk_total_space diskfreespace filegroup fileinode fileowner link readlink symlink    

http://srele.extra.hu/itf/phpinfo.php
[ Nikola Poša @ 27.01.2009. 11:19 ] @
Izvinjavam se shto "nachinjem" ovu staru temu, al' valjda je bolje tako nego da otvaram novu... :)

O chemu se radi... Trenutno radim na jednom sajtu (aplikaciji), na kome cu izmedju ostalog morati da implemetiram i neshto shto se zove "masovno slanje email-ova". Znam da je glupo da se za takve stvari koristi kombinacija petlja + mail(), pa sam se odluchio za Swift Mailer. E sad, problem je shto mi za te potrebe moj hosting provajder ne dozvoljava da koristim njihov SMTP, pa sam se odluchio za alternativu u vidu mog GMail naloga. Josh veci problem je shto nikako ne mogu da "nateram" Swift da poshalje mejl. Evo dela koda u kome vrshim inicijalizaciju Swift-a:
Code:

function __construct($smtp_server, $smtp_port)
{    
    $smtp = new Swift_Connection_SMTP($smtp_server, Swift_Connection_SMTP::PORT_SECURE, Swift_Connection_SMTP::ENC_TLS);
    $smtp->attachAuthenticator(new Swift_Authenticator_LOGIN()); 
    $smtp->setUsername("[email protected]");
    $smtp->setpassword("********");

    $this->swift = new Swift($smtp);
}

Ovo je inache konstruktor modela, kojeg sam zaduzhio za obavljanje tih poslova oko slanja email-ova. Taj argument $smtp_server prosledjujem u jednom drugom fajlu, pri kreiranju instance tog modela, i on "vuche" vrednost iz konfiguraciong fajla, koja je u mom sluchaju: smtp.gmail.com. To sad nije ni bitno, ali znate o chemu pricham...

E, namerno sam vam izdvojio samo taj deo, iz prostog razloga shto se uvek u njemu baci izuzetak, koji "kazhe" uvek ovako neshto:

The SMTP connection failed to start [tls://smtp.gmail.com:465]: fsockopen returned Error Number 35501416 and Error String 'Unable to find the socket transport "tls" - did you forget to enable it when you configured PHP?'.

Pokushao sam i da u php.ini fajlu omogucim openssl ekstenziju, ali opet mi javlja istu greshku. Dodushe, to sam pokushavao u lokalu, ako to uopshte ima veze...

Ako neko ima neko reshenje, ili mozhda neki drugi predlog, u smislu da izbegnem koriscenja gmail-a, bio bih mu jako zahvalan.
[ ksrele @ 27.01.2009. 11:28 ] @
Pa isti problem sam imao i ja (ako si procitao ranije postove iznad), mail funkcija ima neko ogranicenje a fsockopen() je zabranjena funkcija. Proveri u phpinfo() da li ti je ta funkcija omogucena, pa ako jeste probaj neki lokalni mail (od provajdera) preko ovog koda sto si napisao.
[ Nikola Poša @ 27.01.2009. 11:59 ] @
Ma izgleda da je omogucena, prichao sam sa ljudima iz tehnichke podrshke, ali kazhu da problem mozhe da pravi firewall na njihovim serverima, koji onda ogranichava mogucnosti fsockopen() f-je...
[ Tudfa @ 27.01.2009. 17:54 ] @
A ti imas ovakav konstruktor :

Code:

function __construct($smtp_server, $smtp_port){...}


i vidim da $smtp_server prosledjujes u konstruktor klase Swift_Connection_SMTP kao parametar za server, ali za port
prosledjujes Swift_Connection_SMTP::PORT_SECURE (verovatno default port 465 na kojem bi trebalo da radi ok) a ne $smtp_port .
Ne mora da znaci da je ovo greska, i da zbog toga javalja error al ne vidim gde koristis tu $smtp_port promenljivu koju si prosledio.

poz


[ Nikola Poša @ 27.01.2009. 19:04 ] @
Ma ne, taj drugi parametar ne koristim u sluchaju konekcije na GMail. Taj konstruktor sam postavio tako da bi u sluchaju da koristim neki drugi SMTP server mogao da prosledim i konkretan port za njega. U konf. fajlu te aplikacije koje pravim sam postavio te konstante koje treba da se konfigurishu:
Code:

define('SMTP_SERVER', 'smtp.gmail.com');
define('SMTP_PORT', '465');

i njih po default-u prosledjujem konstruktoru tog modula pri njegovoj inicijalizaciji. Mozhda sam samo trebao u definiciji konstruktora da stavim podrazumevanu vrednost za taj drugi parametar (npr. $smtp_port = 0), ali svejedno, ne pravi mi to problem... :)
[ Tudfa @ 27.01.2009. 20:46 ] @
Ok, pomislio sam samo da si hteo da prosledis tu vrednost, ali si zaboravio da zamenis Swift_Connection_SMTP::PORT_SECURE .
A jel si probao sa portoviima 25 i 587 ?

Ovu gresku koju si naveo, ja dobijem samo kad uradim sledece :

- odem u php.ini i stavim pod komentar liniju extension=php_openssl.dll tj. iskljucim ekstenziju i restartujem apache da bi akcija imala efekta.
- pokrenem skript u kome otvaram konekciju i saljem poruku

i tad dobijem ovo :

Citat:

Fatal error: Uncaught exception 'Swift_ConnectionException' with message 'The SMTP connection failed to start [tls://smtp.gmail.com:465]: fsockopen returned Error Number 15374568 and Error String 'Unable to find the socket transport "tls" - did you forget to enable it when you configured PHP?''


Ista greska kao i kod tebe. Inace ako je ukljucena ekstenzija mail se posalje normalno.

Banalno zvuci ali mozda si zaboravio da restartujes server posle ukljucivanja ekstenzije php_openssl.dll, pa akcija i nije dobila na efektu.




[ Nikola Poša @ 27.01.2009. 20:56 ] @
25-icu sam isprobavao, ali taj 587 nisam. Probacu...

Ne, nisam zaboravio da restart-ujem Apache nakon ukljuchivanja ekstenzije, zato mi je i bilo chudno shto mi opet javlja istu greshku. Ali chak i da mi proradi u lokalu, dzaba mi sve ako na Veratu, poshto kod njih imam hosting, nije omogucena ta ekstenzija. A ona je po default-u disable-ovana...

Pitam se dal' uopshte postoji nachin da se konektujem na GMail bez prosledjivanja tog treceg parametra (enkripcije)...
[ Nikola Poša @ 27.01.2009. 21:09 ] @
Evo sad sam bash isprobao i bez tog treceg parametra, i onda se deshava sledece:

- kad probam na portovima 25 i 587, baci se izuzetak sa tekstom: Authentication failed using username '[email protected]' and password '********'. I nemoj da me neko pita dal' sam dobro kucao password...
- a kad probam na portu 465, baci se ovaj izuzetak: There was a problem reading line 1 of an SMTP response. The response so far was: []. It appears the connection has died without saying goodbye to us! Too many emails in one go perhaps? (fsockopen: #0).
[ Tudfa @ 12.02.2009. 15:06 ] @
Evo jedne zanimljivosti u vezi php_openssl.dll ekstenzije. Naime nakon sto sam reinstalirao sistem, i ponovo instalirao php/apache,
ekstenzija jednostavno nije htela da radi u localhostu. Pojavljivao se error tipa "PHP : Warning - unable to load taj i taj dll",
iako je php_openssl.dll ukljucen u php.ini fajlu i postoji u ext direktorijumu.

Jednostavno nikako nije htela da proradi, a radila je... Onda sam procitao ovo :

http://www.php.net/manual/en/openssl.installation.php

Da bi ova ekstenzija radila(ovo se odnosi samo za Win32 korisnike) postoji dll(zove se libeay32.dll) koji mora da se nadje u sistemskoj PATH varijabli,
i cim sam dodao putanju do PHP direktorijuma u nju kao u prethodnoj instalaciji windowsa, sve je ponovo proradilo.

Eto, mozda nekom ovo pomogne pre nego sto se namuci kao ja testirajuci satima kod koji radi.