Php beállitása, hogy működjön a mail() függvény

Php beállitása, hogy működjön a mail() függvény
2011-04-23T23:05:11+02:00
2011-04-25T00:08:36+02:00
2022-11-21T15:45:39+01:00
Ervin
Sziasztok!

Mielőtt nekikezdek a mondanivalómnak közlöm veletek, hogy angol billentyűm van es beállítani magyarra legalabb fel ora ( az én esetemben, bonyolult... nem akarom ragozni ) es , hogy KEZDO vagyok a web es a php világában.

Bocsanatot kerek a nehez olvashatosag miatt !

Nos... nem is tudom hol kezdjek neki...
talan az elejen...

Az alap problemam az , hogy a konyv amibol tanulok nem reszletezni a webkiszolgalok rejtelmes eletet, csak a PHP ra oszpontosit.

Letrehoztam egy ithoni szervert, webkiszolgalot, hogy tudjam futtatni a php parancsfaljaimat... tanulni szeretnek, mint mondtam es a tesztelesek erdekeben sokmindent ki kell probaljak, ezert raktam fel az APACHE 2.2 szerveret es ezert telepitettem ra a PHP 5.3.6 verziojat. (win 7-el rendelkezem, 32 bit-es)

A celom az , hogy egy HTML urlapbol nyert adatokat php parancsfajl segitsegevel kuldjem el a megadott emailcimre. Tehat igy (leegyszerusitve):

$to = 'racz_ervin@yahoo.com';
$subject = 'Tema';
$msg = "Tartalom";
mail($to, $subject, $msg, 'From:' . $email);

A konyv azt a hibalehetoseget irja, hogy be kell allitani a PHP-t a webkiszolgalon, hogy tudja, hogyan kell e-mailt kuldeni. Nallam nem megy a mail() fuggveny es lehet , hogy a levelkuldes tamogatasa nincs rendesen beallitva a php-ben.

Jo lenne , hogy ha valaki leirna, hogy hogyan tudnam beallitani magamnak a webkiszolgalomon.
Mutasd a teljes hozzászólást!

  • levélküldéshez levelező szerver is kell. Ha azt nem akarsz telepíteni, akkor használhatod a szolgáltatódét, vagy a gmail-ét, vagy egyéb ingyenesét, ahol van smtp hozzáférés.
    php.ini -ben be tudod állítani az alapértelmezett levező beállításokat.
    A php.ini agyon van dokumentálva, és minden kommentárhoz van egy link, ahol bővebben leírják az infókat.

    Viszont, a helyedben nem a mail függvénnyel vacillálnék, hanem 'googlizz' rá arra, hogy "phpmailer". Első találat.

    Meg, arra érdemes figyelni, hogy bizonyos internet szolgáltatók szeretik tiltani a kimenő/bejövő smtp/smtps portot, így kényszerítve a felhasználót a szolgáltató levelező rendszerének használatára.

    A konyv azt a hibalehetoseget irja, hogy be kell allitani a PHP-t a webkiszolgalon

    ez nem hibalehetőség, hanem "feature"
    Mutasd a teljes hozzászólást!
  • php.ini-ben
    [mail function] ; For Win32 only. ; http://php.net/smtp //SMTP = localhost, ezt átírod a neked megfelelő kiszolgálóra, nálam SMTP = mail.t-email.hu ; http://php.net/smtp-port smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = you@yourdomain
    Mutasd a teljes hozzászólást!
  • Szükséged lesz egy SMTP szerver programra. A többségük fizetős, ráadásul a házi szerverről küldött leveleket gyakran SPAM-ként kezelik. A php.ini-ben be tudod állítani a "mail function" részben. Az SMTP szervernek futnia kell a webszerver mellett.
    Mutasd a teljes hozzászólást!
  • Köszönöm a gyors válaszokat.
    De sajnálattal közlöm , hogy egy szamárral van dolgotok.

    Tehát van két út: saját szerve készítése és egy meglevo használata, például a gmail-e. Nekem az 1. szempontom, hogy a php parancsfajlom a legegyszerűbb legyen és hiba nélkül fusson, ezert ha nem is használnám a mail() függvényt olyan sokszor meg szeretnem oldani ezt a problémát , mert idegesít. Mivel nincs tanárom, aki elmagyarázna ezeket a dolgokat nekem ,ezert nagyon halas lennek ha valaki annak módjára megértetne velem(minél egyszerűbben és hétköznapiasabban) ,hogy hogyan is működik ez a dolog.( hogyan jön közbe pl a freeweb a gmail és a saját levelező szerverem es , hogy hogyan működik ez a levelezes, de azzal se vagyok tisztában , hogy hogyan tudnám használni a gmail-t )

    Jo lenne egy pontos leírás hogy hogyan tudnám működőkepéssé tenni a php oldalamt. (tudom, ez egy kicsit gyerekesen hangzott... de meg lehet belül meg nem nőttem fel)

    Eddig célozgattatok egyes dolgokra, de konkrétan nem tudom hogy mit kell tegyek, mert azok az oldalak számomra semmit se érnek amelyek php.ini-ben vannak feltunteve (a googlet se felejtettem el, egész nap azt bújtam), mert nem tudok angolul.
    Remélem értitek , hogy mire utalok.

    Például olyanokat nem tudok, hogy milyen szolgáltatóra gondoltatok. Aki az internetet biztosítja ? Ha igen akkor, nalluk milyen adatokat keressek es azokat hogy hasznaljam fel ?

    Ha nem igy van akkor arra lennek kivancsi, hogy a gmail-nal ezeket az adatokat hogyan erem el, kell-e regisytralni, fizetni ? Arra is kivancsi lennek, hogy utana mit kene valtoztassak a php.ini-ben.
    Mutasd a teljes hozzászólást!
  • G-Mailes megoldás annó nekem ez volt a megoldható, hiába szerkesztettem php.ini fájlt, ehhez nem kell semmilyen kiegészítő program.

    PHPMAILER letöltés:

    http://www13.zippyshare.com/v/20663071/file.html
    Beillesztendő forráskód
    <?php require("phpmailer/class.phpmailer.php"); $email = 'valaki@xyz.hu'; //Címzett $mailer = new PHPMailer(); $mailer->IsSMTP(); $mailer->Host = 'ssl://smtp.gmail.com:465'; $mailer->SMTPAuth = TRUE; $mailer->Username = 'valaki@gmail.com'; // $mailer->From ugyanezt kell majd megadd $mailer->Password = 'gmailesjelszo'; // G-Mailes jelszó $mailer->From = 'valaki@gmail.com'; // G-Mailes e-mail $mailer->FromName = 'Valaki'; // Feladó neve(Te neved, vagy szolgáltatásod neve) $mailer->Body = 'üzenet tartalma'; $mailer->Subject = 'Téma'; // Téma/Tárgy $mailer->AddAddress($email); $mailer->Send(); ?>

    Ha mindent be állítasz a te gmailes címedre akkor menni fog simán, máskülönben elég sok dolgod lesz ha máshogy akarod megoldani.
    Mutasd a teljes hozzászólást!
  • Ha mindent be állítasz a te gmailes címedre akkor menni fog simán, máskülönben elég sok dolgod lesz ha máshogy akarod megoldani.


    Ebben speciel tévedsz.
    Mutasd a teljes hozzászólást!
  • tehát, php-val levélküldést sokan megszenvedik a mail() függvény miatt.
    Ahhoz, hogy a mail függvénnyel olyan e-mailt tudj küldeni, ami biztosan "szabályos", ahhoz szinte kézzel kell megírnod a teljes levél fejlécét. Nem beszélve a karakterkódolásról stb...

    amit a kolléga másolt feljebb az jó. Kivétel a portot.
    Gmailnek azért is van több smtp portja link, mert mint már említettem egyes szolgáltatók nem engedik ki az smtp-t azzal az indokkal, hogy az övékét használják. A linken ott egy 587 -es port, azt érdemes használni.


    $mailer->Host = 'ssl://smtp.gmail.com:587';

    Ahhoz, hogy saját szerverről tudj e-mailt küldeni, szükség van egy MTA programra. Az felelős a levél küldésért.
    Ezt ingyenes, fizetős tárhelyeken biztosítják, a gmail ingyen biztosítja, hogyha regisztráltál gmail-es fiókot.

    A PHPMailer-er egyszerűbb a levél küldés, megformázza neked a levelet, és írja a hibákat is, hogyha nem tudja kiküldeni a levelet.

    Tehát tipp: felejtsd el a php.ini-t, és a php mail() függvényt.
    PHPMailer magyar help
    Mutasd a teljes hozzászólást!
  • Nagyon szépen köszönöm a válaszokat és tanácsokat. Rögtön ki is próbálom és jelzem hogy mi történt.
    Mutasd a teljes hozzászólást!
  • Működik, köszönöm szépen a segítséget. Viszont ennek a mailernek van egy idegesítő hátránya, azt tapasztaltam, hogy ha nem másolom be a mailer-t abba a könyvtárba ahol a php parancsfajlom található akkor nem futnak le $mailer->send(); parancs utáni többi parancs. A kérdésem az lenne, hogy ez más esetben nem állhat fenn? Például ha valami adatot rosszul adok meg (például nem létező gmail-os felhasználót vagy jelszót) akkor is hasonlóan fog viselkedni ? (Konkrétan nem erre a példára varom a választ mert ezt kiprobalhatom, de ha vannak ilyen esetek akkor vannak rá megoldások ?)

    Azt szeretnem meg tudni, hogy hogyan lehet fejléceket hozzárakni, például , hogy az űrlapon bekért e-mailcimet is jelenítse meg.
    Mutasd a teljes hozzászólást!
  • Melyik példa? Amit EliTe írt, vagy amit én linkeltem?

    Az én általam linkeltben, ha nem sikerült a levelet kiküldeni, akkor nem fut tovább a php script, és kiírja, hogy

    Nem sikerült az e-mail kiküldése
    Hiba: xxyyy


    és nem fut tovább a scipted. Ha kiküldte, akkor fut tovább.

    Ha nem adsz meg neki adatot, pl e-mail címet, akkor is fog sikongatni gondolom.

    Milyen fejlécre gondolsz?
    Mutasd a teljes hozzászólást!
  • Nekem a php fajlom nemcsak a levélküldésből áll. Tehát ha küldi el a levelet akkor a többi értékes parancsot se végzi el. Nem formázza meg a html oldalt. Van erre megoldás?


    Arra a fejlécre gondolok ahol a címzőt írja és a subjectet. Nekem úgy lenne az ideális ha nem az én gmail-es címemet írná oda , hanem az űrlápbon megadott emailcímet. Lehet hogy most hülyeséget mondtam.
    Mutasd a teljes hozzászólást!
  • if(!$mail->Send()) { echo "Nem sikerült az e-mail küldése. <p>"; echo "Hiba: " . $mail->ErrorInfo; exit; } else echo "Levél sikeresen elküldve.";

    ott van egy exit. azt szedd ki, a hiba üzeneteket meg akár rakhatod változóba is.


    Nekem úgy lenne az ideális ha nem az én gmail-es címemet írná oda , hanem az űrlápbon megadott emailcímet.

    Azt akarod, hogy megadja valaki az e-mail címét, és az a cím legyen a feladó?


    Ilyet ne nagyon akarj, mert nem szerencsés dolog. Többek között mert spammolni fognak onnan.
    Gmail esetében meg nem is engedi, hogy más e-mail címmel küldj levelet, mint amelyikkel azonosítottad magad. És ez így helyes.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd