doctorwho 0 Share Posted November 8, 2012 Sziasztok! Van egy formom, amiben az adatokat kitöltve a küldés gombra egy MYSQL adatbázisban tárolódnak az adatok. A formon az e-mail címet is bekérem. Hogy lehet megoldani, hogy a formon megadott e-mail címre kiküldjek üzenetet? Elõre is köszönöm segítségeteket. Link to comment Share on other sites More sharing options...
Kiskalóz 0 Share Posted November 8, 2012 PHP mail függvény. Lásd itt: Link Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 8, 2012 Sajnos nem sikerült. Valaki tudna egy mini példát küldeni hozzá? Link to comment Share on other sites More sharing options...
arpsoft 12 Share Posted November 8, 2012 A link alatt található millió példa nem jó? Link to comment Share on other sites More sharing options...
Kiskalóz 0 Share Posted November 8, 2012 Ez a példa a link alatt volt. Mi az amit nem értesz benne? ?php $to = 'nobody@example.com'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); ?> Link to comment Share on other sites More sharing options...
payskin 940 Share Posted November 8, 2012 Óvatosan kérdezem, hogy a szerveren, ahol a PHP-t futtatni szeretnéd, engedélyezve van számodra, hogy levelet tudjál küldeni? Nem mindig olyan egyértelmû, hogy igen. Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 9, 2012 Szia, igen, engedélyezve van. Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 9, 2012 Eddig jutottam: <?php $szoveg = "<HTML>"; $szoveg = $szoveg . "<BODY bgcolor=lightblue>"; $szoveg = $szoveg . "<br><br><br>"; $szoveg = $szoveg . "<font color=crimson size=7><b>Köszönjük, adatai bekerültek adatbázisunkba!</b></font>"; $szoveg = $szoveg . "</BODY>"; $szoveg = $szoveg . "</HTML>"; mail ("example@example.com","proba level",$szoveg,"From: felado@emailcim.hu(Felado Ember)\nX-Priority: 1 (Highest)\nMIME-Version: 1.0\nContent-type: text/html; charset=iso-8859-1"); ?> Hogy lehet azt megcsinálni, hogy a formon éppen megadott e-mail címre küldjön egy levelet? Link to comment Share on other sites More sharing options...
Kiskalóz 0 Share Posted November 9, 2012 Úgy hogy a címzett helyére, az ûrlapról érkezõ adatot írod be. ($_GET, $_POST) Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 9, 2012 Valahogy így? <?php $szoveg = "<HTML>"; $szoveg = $szoveg . "<BODY bgcolor=lightblue>"; $szoveg = $szoveg . "<br><br><br>"; $szoveg = $szoveg . "<font color=crimson size=7><b>Köszönjük, adatai bekerültek adatbázisunkba!</b></font>"; $szoveg = $szoveg . "</BODY>"; $szoveg = $szoveg . "</HTML>"; mail ("$_GET[e_mail]","proba level",$szoveg,"From: felado@emailcim.hu(Felado Ember)\nX-Priority: 1 (Highest)\nMIME-Version: 1.0\nContent-type: text/html; charset=iso-8859-1"); ?> Link to comment Share on other sites More sharing options...
kléni 7 Share Posted November 9, 2012 Ha a felhasználó által beküldött e-mail címre szeretnél levelet küldeni, elsőnek ellenőrizzük le, ha üres, vagy formailag nem szabályos, kapjon hibaüzenetet: if (empty($email) or preg_match("/^[w-]+(.[w-]+)*@([w-]+.)+[a-zA-Z]{2,7}$/", $email)) Ha megfelelő, küldjük el a levelet, majd ha elment, írjuk be az adatbázisba az adatokat. Ha csak a fent látható szöveget szerenéd elküldeni tartalomként, nem fontos html formájú levelet küldeni: mail($email, "Test", "Köszönjük, adatai bekerültek adatbázisunkba!", "From: Én Nevem <cim@email.hu>"); Ha azonban szeretnél formázásokat a levélben, kicsit többet kell beállítani: $beallitas = "From: Én Nevem <cim@email.hu>\r\n"; $beallitas.= "MIME-Version: 1.0\n"; $beallitas.= "Content-Type: multipart/mixed; boundary=\"".md5(time())."\"\n"; $szoveg = "--".md5(time())."\n"; $szoveg .= "Content-Type: text/html; charset=utf-8\n"; $szoveg .= "Content-Transfer-Encoding: 8bit\n\n"; $szoveg .= "<html><body>Köszönjük!<br />Adatai <b>Sikeresen</b> bekerültek adatbázisunkba!</body></html>"; mail($email, "Test", $szoveg, $beallitas); Ezzel a pár beállítással elérhetjük, hogy html-ként legyen elküldve, és ne érzékelje spam-nek a levelet. Használd a "combined operator"-t a szövegek összefűzésére. Végül így nézne ki a mail.php: <?php if (isset($_POST["kuldes"])) { $email = $_POST["email"]; if (empty($email) or preg_match("/^[w-]+(.[w-]+)*@([w-]+.)+[a-zA-Z]{2,7}$/", $email)) $hiba = "Hibás e-mail cím!"; else { $beallitas = "From: Én Nevem <cim@email.hu>\r\n"; $beallitas.= "MIME-Version: 1.0\n"; $beallitas.= "Content-Type: multipart/mixed; boundary=\"".md5(time())."\"\n"; $szoveg = "--".md5(time())."\n"; $szoveg .= "Content-Type: text/html; charset=utf-8\n"; $szoveg .= "Content-Transfer-Encoding: 8bit\n\n"; $szoveg .= "<html><body>Köszönjük!<br />Adatai <b>Sikeresen</b> bekerültek adatbázisunkba!</body></html>"; if (!mail($email, "Test", $szoveg, $beallitas)) $hiba = "Hiba az e-mail elküldése során!"; else { mysql_query("..."); header("Location: index.php"); } } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Teszt</title> </head> <body> <?php if (isset($hiba)) echo "<p>".$hiba."</p>" ?> <form action="mail.php" method="post"> <p>Az e-mail címe:</p> <input type="email" name="email" /><br /> <input type="submit" name="kuldes" value="Kiválaszt" /> </form> </body> </html> Mint látható, a feldolgozás ugyan abban a fájlban van, ahol a fomr is, ez ugyanakkor nem baj, hiszen ha még nem kattintottunk az elküldés gombra (nem ismert a kuldes post), nem fut le a feldolgozás, ha pedig igen, hiba esetén ki tudjuk írni a hibát, majd elküldheti újra az adatokat, ha sikere minden, elirányítjuk onnan. Ha még többet szeretnél, például csatolmányokat, vagy ékezetes címet (bár lenet ezt csak én nem tudtam még megoldani ügyesen ) használhatsz előre elkészített rendszereket is, például a PHPMailer-t, viszont kis levelekhez felesleges ennyi sok funkcióval rendekező rendszer, a fenti példám is elég lesz. A font html elem már évek óta elavult, használata tilos! Helyette css formázást használj. Ez igaz a többi, már évek óta nem használt tulajdonságokra, és a másik témában írt példádra is. Nézd végig a http://w3schools.com/ oldalon lévő tutorialokat. Link to comment Share on other sites More sharing options...
arpsoft 12 Share Posted November 10, 2012 Csak egy apróság a fenti kódhoz: az md5(time())-ot inkább rakd le a legelején egy változóba, mert extrém esetben elõfordulhat, hogy a két hívás között éppen vált a time() értéke és akkor a levelezõ program nem fogja tudni értelmesen megjeleníteni a levelet. Link to comment Share on other sites More sharing options...
Kiskalóz 0 Share Posted November 10, 2012 Valahogy így? Hadd kérdezzem meg.. Miért nem próbálod ki? Szerintem senki nem fogja helyetted tesztelni. Amúgy ez így nem jó : mail ("$_GET[e_mail]", ... Találd ki miért nem. Link to comment Share on other sites More sharing options...
kléni 7 Share Posted November 10, 2012 Attól függetlenül, hogy tényleg ne használjon ilyet, még tökéletesen lefut. Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 21, 2012 Sziasztok! Ezt a hibát kapom: SMTP Error: The following recipients failed: valaki@freemail.hu A levél nem került elküldésre A felmerült hiba: SMTP Error: The following recipients failed: valaki@freemail.hu SMTP server error: relay not permitted Belső hálózaton rendesen működik, a külső hálózatra viszont nem küldi ki a leveleket. Link to comment Share on other sites More sharing options...
[OP]Destroy-man 160 Share Posted November 21, 2012 Valószínűleg nem jó az SMTP beállítás. Az SMTP-nek meg kell egyeznie a kimenő domain SMTP-jével. Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 21, 2012 Köszi Ezt a hibát kapom: stream_socket_enable_crypto(): this stream does not support SSL/crypto in ... Mit javítsak? Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 21, 2012 Javítottam a hibát. Már csak egy gondom van: A levélben nem jelenik meg a kép: $mail->Body = "<img src=kep.jpg>".$uzenet ; Mit kell benne javítani? Csatolmányban megérkezik, csak a levél szöveg részében nem jeleníti meg a képet. Link to comment Share on other sites More sharing options...
[OP]Destroy-man 160 Share Posted November 21, 2012 Csatolmányként kell a képet mellékelni, és CID-ként kell rá hivatkozni, vagy külső serveren fixen tárolni a képet, és külső linkként kell azt meghívni. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now