Email küldő szolgáltatás

Honlapok esetében sokszor felmerül az a kérdés, hogy milyen módon lehet olyan szolgáltatást kitenni a lapra, ahonnan a látogatók egyszerűen és gyorsan tudnak E-mail küldeni a webmesternek (vagy egy adott címre).

Egyik lehetséges megoldás a Fusion Mail előre megírt, ingyenesen felhasználható scriptje, mely PHP segítségével valósítja meg a fenti “feladatot”. Az eredeti script egyes részeit lefordítottam, illetve az eredeti “thankyou.php” helyett itt már a “sikeresmail.html” szerepel, egyéb módosítás nem történt.

Mire is lesz szükséged?

Először is egy olyan tárhelyre, ahol működik a PHP és lehet mail-t küldeni (ha ezt nem tudod, kérdezd meg a rendszergazdát). Ha ezek a feltételek adottak, már csak le kell mentened az alább látható 3 kódot olyan néven ami a címükben is szerepel, majd feltölteni a tárhelyedre.

Az “index.html” lesz az a lap, melyet a látogatók ki fognak tölteni. Természetesen ezt a kódrészletet nem csak így önmagában használhatod fel, akár már meglévő honlapodba is beépítheted.

1
2
3
4
5
6
7
<form action="mail.php" method="post">
Küldő neve: <input type="text" name="name"><br/>
Küldő mail címe: <input type="text" name="email"><br/>
Üzenet szövege<br/>
<textarea name="message" cols="40" rows="5"></textarea><br/>
<input type="submit" value="küldés"><br/>
</form>

A “mail.php” fogja elvégezni a tényleg munkát, ez kapja majd meg a “küldés” gomb megnyomásakor az “index.html”-be beírt adatokat.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
 
/*
*****************
fusion mail
 
version 1.0
 
fusionphp.com
*****************
*/
 
//variables (change these)
 
$youremail = "cimzett@mailcime.hu";
// a te mail címed, ahova a levelek menni fognak
 
$subject = "contact form";
// a levél tárgya
 
$thankyou = "sikeresmail.html";
// sikeres küldés után ez fog megjelenni a küldőnek
 
// innentől kezdve már ne módosíts semmit
function check($postArg) { return (IsSet($_POST[$postArg]) && !Empty($_POST[$postArg])); }
 
if(!check('email')){
?>
Nem adtál meg mail címet, nyomd meg a VISSZA gombot.<br/>
<?php
}elseif(!check('name')){
?>
Nem adtál meg nevet, nyomd meg a VISSZA gombot.<br/>
<?php
}elseif(!check('message')){
?>
Nem írtál be üzenetet, nyomd meg a VISSZA gombot.<br/>
<?php
}else{
 
$msg = ereg_replace("\\\'", "'", $_POST['message']);
$msg = ereg_replace('\\\"', "\"", $msg);
$message1 = "from: " . $_POST['name'] . "\nemail: " . $_POST['email'] . "\nmessage:\n" . $msg;
mail($youremail, $subject, $message1, "From: " . $_POST['email'] . "\r\nReply-to: " . $_POST['email'] . "\r\n");
?>
<meta http-equiv="refresh" content="0; url=<?echo $thankyou;?>"">
<?php
}
?>

A “sikeresmail.html”-nek mindössze annyi a dolga, hogy a küldés után tájékoztassa a látogatót, esetleg irányítsa vissza a kezdőlapra.

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Mail a webmesternek </TITLE>
</HEAD>
 
<BODY>
Leveledet sikeresen továbbítottuk!
</BODY>
</HTML>

Köszönet Zsolának, hogy figyelmeztetett a kód register globals off inkompatibilitására! – BlackY

36 HOZZÁSZÓLÁS

  1. Szia,
    Segítséget kérnék. A magyar ékezetes karakterek helyett mindenféle krixkraxok jelennek meg.
    Hogy tudom megoldani hogy megjöjjenek a karakterek rendesen?

    Köszi a válaszodat előre is

  2. Üdv.
    Segítségre lenne szükségem. Uw-s tárhelyre felmásoltam a 2 html-t és a Php-t, de nem küld e-mailt. Mit kell még tennem?

  3. Jandó Tamásnak/ Tamás az index.html karakterkódolását állítsd át UTF8-ra. Nekem így működik rendesen.

  4. Hát nekem még nem sikerült megoldani.
    Megírná valaki a megoldást?
    Én extra.hu-n használnám.
    Köszi

  5. Na jó, most valahogy még is megy az extráról küldés. De az ékezetes betűk nem jól jelennek meg a levélben. Mindegyik file-ba beraktam padig az UTF-8-at, de akkor sem úgy jön meg a levél.

  6. Nagyon jó a kis script! Csak nekem is ez az ékezetes dolog a problémám. :( Pedig a kitöltendő fájlban (index.html) utf-8 van beállítva ()

    Miért lehet ez? Sőt a mezőknél is beállítottam a magyart (), bár lehet, hogy ez felesleges. :)

    Pls, fontos lenne a válasz!

  7. Sziasztok próbálgatom a dolgot de mindig azt írja ki, hogy nem adtam meg e-mail címet pedig igen… Tudna valaki mondani erről valamit.

  8. Sziasztok! Hogyan tudom bővíteni mondjuk egy telefonszámmal és egy címmel?

    Addig eljutottam, hogy a htmlben csináltam 2 új bekérő mezőt. De a mail.phpban mit kell beleírnom?

    Segítsetek légyszíves, előre is köszönöm.

  9. Ezt cseréld ki a php-ben, és az új mezők neve legyen telefon és cim:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    // innentől kezdve már ne módosíts semmit
    function check($postArg) { return (IsSet($_POST[$postArg]) &amp;&amp; !Empty($_POST[$postArg])); }
     
    if(!check('email')){
    ?&gt;
    Nem adtál meg mail címet, nyomd meg a VISSZA gombot.
     
    Nem adtál meg nevet, nyomd meg a VISSZA gombot.
     
    Nem írtál be üzenetet, nyomd meg a VISSZA gombot.
     
    Nem írtál be telefonszámot, nyomd meg a VISSZA gombot.
     
    Nem írtál be címet, nyomd meg a VISSZA gombot.
     
    &lt;meta http-equiv="refresh" content="0; url=""&gt;

    Az előző hozzászólást kérem töröljék!

  10. Sziasztok én is segítségre szorulnék. Nextarhely-es vagyok és amikor rákattintok az elküld gombra kiírja h “Error 404! /%3c File not found ! De az emailt ennek ellenére elküldi, mi lehet a gond ?

    Előre is kösz a segítséget !

  11. Sziasztok!

    A kódolásról annyit, hogy nálam úgy működik, hogy ANSI-be mentem és iso-8859-1 a kódolás. Eddig utf-8-al próbálkoztam, de vagy nem működött, vagy az ékezetes karaktereket nem jelenítette meg megfelelően. Ha valaki tud erre magyaráztatot írja meg köszi!

  12. Na ha minden törik és szakad… Korábban nekem is előjöttek ezek a problémák. Ezért kerestem valami kiforrottabb megoldást.

    Amit találtam az pár (asszem 3) fájlból áll, könnyű konfigolni, és szépen küld HTML formátumú emaileket is. http://phpmailer.codeworxtech.com/index.php

    A probléma csak annyi hogy a szolgáltató email kliensét használja, és ha azon limitálva van a kimenő mennyiség akkor ott megakadunk.

  13. Sziasztok újra!

    Szeretném checkboxos funkcióval is kibővíteni. A htmlben könnyen megtudom oldani, de sajnos a phpban fogalmam sincs, hogy hogyan kell beállítani. Tudnátok segíteni?!

  14. Sziasztok, újra lenne egy kérdésem :)

    Szeretném checkboxxal is kiegészíteni, tudnátok segíteni? :)

  15. Szia, köszönöm, hogy megosztottad velem ezt a nagyon ügyes kis e-mail-küldő szolgáltatást. Lenne viszont egy két kérésem még ezzel kapcsolatban (mivel nem konyítok php-hez):
    Szóval megoldható lenne-e, hogy nem kitöltött név/e-mail cim/szöveg esetén hibaüzenet helyett a sikeres elküldéshez hasonlóan egy/három html-t hívna meg. Továbbá érdekelne még egy checkbox is aminek bejelölése esetén a számomra elküldött üzenetről egy másolatot kapna a küldő esetleg egy kis fejléccel egyutt, hogy pl.: Ön Dátum/Óra -kor ezt az üzenetet küldte a http://www.tehonlapod.hu cimről: …….

    előre is köszönöm a segítséget

  16. Sziasztok.
    Van egy oldalam amiben szeretnék egy egyszerű név és email cim regisztrációt és hogy elküldje az email cimemre.Tudd e valaki nekem segiteni ebben. Előre is megköszönöm

    Balogh Csaba

  17. Szuper a script. Viszont én FW-ről szeretném használni, onnét nem működik. Mi a megoldás?

  18. Csináltam egy űrlapot /html / php – ban szeretném működésre bírni, de nem igazán működnek a scriptek / vagy inkább nem jól csinálom /. Segítséget, ill. keresek olyan embert, aki helyre teszi a dolgokat.

  19. Minden szuperül megy, viszont a karakterkódolás mindenképpen problémás.
    Tudna valaki segíteni, hogyan tudám átállítani? Elvileg utf-8-ba ment.

  20. Heló!

    web4-en lenne egy ilyen jellegű beágyazásom a honlapunknak. A levélküldő keret meg rublikák már megvannak, csak a parancsokkal van baj. LE tudnád nekem úgy írni, hogy kitörölsz belőle minden nem beleillő megjegyzést, mert nem akar sikerülni a beágyazása html-ben. Mivel autómatikusan ki van írva a nem adtál meg emailt, meg nevet meg sikerült a küldés szövegek, anélkül, hogy a küldés gombra kattintottam volna majd pedig tovább viszi a honlapot egy üres oldalra.

    E-mailben, ha elküldenéd nekem, akkor azért nagyon hálás lennék.

    Köszönöm előre is a segítségedet!

  21. Ja, mailto:-tel? Csak az a beépített levelezőt nyitja meg, ami kényelmetlen. Ezzel szerverről küldhetsz.

  22. Hello!
    Betettem a weboldalamba (www.spotbazar.hu) de nem küldi el a levelet. A szerveren nincsen gond, mert a webmailből tudok küldeni és fogadni is. Apró módosításokat tettem a kapcsolat mezőbe, de csak az index.html-be hogy fehér legyen a betű. Mi lehet a probléma?

  23. Köszi a scriptet nagyon jól működik!
    Egy olyan extrával szeretném kiegészíteni hogy amikor rákattintunk a Küldés gombra ne a ….html oldal nyíljon meg,hanem egy pop up ugorjon fel és ott Köszönném meg a regisztrálását/írást.És ezt le lehetne okézni.
    Ebben valaki tudna segíteni?
    Köszi Bence

  24. sziasztok

    Nekem egy olyan problémám lenne ha kitölti a küldő rendesen az email címét akkor nem jön semmi üzenet. A visszajelzés meg jo. Ez mi okozhatja???

  25. Királyok avgytok!
    Köszönöm a tutorialt sokat próbálkoztam már elötte és nem ment ,de ezzel sikerült!

    Egy kérdésem még volna ha azt szeretném hogy legyen egy mező ahová a mellette lévő két számot kell mondjuk összeadni és az a 2 szám mindig cserélődjön (tehát ne mindig ugyan azokat a számokat kelljen összeadnia hanem frissítésnél frissüljön az is ) és ha jól adta össze csak akkor küldhesse el az e-mailt. Ez a botok ellen jelentene védelmet.

  26. Sziasztok,

    Az ékezetes karakterekkel kapcsolatban ez megoldás lehet:

    mail($youremail, $subject, $message1, “From: ” . $_POST[’email’] . “\r\nReply-to: ” . $_POST[’email’] . “\r\nContent-Type: text/html; charset=utf-8\r\n”);

    Így UTF-8 kódolással küldi ki a levelet a rendszer. Ámbár megjegyzem, hogy az ilyen fajta küldés gyakran levélszemétként landol a címzett levelesládájában.

HOZZÁSZÓLOK A CIKKHEZ

Kérjük, írja be véleményét!
írja be ide nevét