Slanje E-Maila iz PHP forme

Slanje E-Maila iz PHP forme

offline
  • Miljan Ilic
  • Pridružio: 18 Jun 2014
  • Poruke: 178

Pozdrav,
Imam sledeci kod koji sluzi za narudzbu Game Servera kod Hosting provajdera. E sada tu imam i PHP skriptu koja bi to trebala da radi ali ne radi. Znaci ja bih zeleo da kad neko ispuni forumu i klikne na Naruci da na moj mail koji unesem dodje poruka sa podatcima iz forme na sajtu.

Kod je sledeci pa ako moze mala pomoc:

<?php if(isset($_POST['submit'])){    /* INFO KORISNIKA */    $name = $_POST['name'];    $email = $_POST['email'];    $grad = $_POST['grad'];    $drzava = $_POST['drzava'];    /* INFO O SERVERU */    $naziv_servera = $_POST['naziv_servera'];    $igra = $_POST['igra'];    $mod = $_POST['mod'];    $slotovi = $_POST['slotovi'];       if(($name == '') || ($email == '') || ($drzava == '') || ($grad == '') || ($naziv_servera == '') || ($igra == 'Call of Duty') || ($mod == '') || ($slotovi == '') ){    }        else {       $ToEmail = 'mintelectronicsrbija@mail.com';  // VAS E-MAIL       $EmailSubject = 'Nova narudzbina';       $mailheader = "From: ".$_POST["email"]."\r\n";       $mailheader .= "Reply-To: ".$_POST["email"]."\r\n";       $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";       $MESSAGE_BODY = "Ime i prezime: \r\n ".$_POST["name"]." <br> ";       $MESSAGE_BODY .= "Email: \r\n ".$_POST["email"]." <br> ";       $MESSAGE_BODY .= "Grad: \r\n ".$_POST["grad"]." <br> ";       $MESSAGE_BODY .= "Drzava: \r\n ".$_POST["drzava"]." <br> ";       $MESSAGE_BODY = "Naziv Servera: \r\n ".$_POST["naziv_servera"]." <br> ";       $MESSAGE_BODY .= "Igra: \r\n ".$_POST["igra"]." <br> ";       $MESSAGE_BODY .= "Mod: \r\n ".$_POST["mod"]." <br> ";       $MESSAGE_BODY .= "Slotovi: \r\n ".$_POST["slotovi"]." <br> ";                    mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader);    } } ?>

HTML Forma:
<div id="order">              <span class="order_slika"><img src="img/ts3.png" style="width:170px;"></i></span>             <span class="order_title">Narucivanje novog servera</span>             <br><br>                          <div class="games_side">                <div class="order_box">                   <span class="info_klijent">Informacije o korisniku:</span>                   <form action="order_ts3.php" method="POST">                   <input name="name" placeholder="Ime i Prezime" /><br>                   <input name="email" placeholder="E-mail" /><br>                   <input name="grad" placeholder="Grad" /><br />                   <input name="drzava" placeholder="Drzava" /><br />                      <div id="info_server">                   <span class="info_server">Informacije o serveru:</span>                   <form action="order_ts3.php" method="POST">                   <input name="naziv_servera" placeholder="Naziv Servera" /><br>                   <input name="igra" value="TeamSpeak 3" readonly  /><br>                   <select name="slotovi">                                        <option value="20 slotova">20 slotova</option>                     <option value="30 slotova">30 slotova</option>                     <option value="40 slotova">40 slotova</option>                     <option value="50 slotova">50 slotova</option>                        <option value="60 slotova">60 slotova</option>                     <option value="70 slotova">70 slotova</option>                     <option value="80 slotova">80 slotova</option>                     <option value="90 slotova">90 slotova</option>                     <option value="100 slotova">100 slotova</option>                     <option value="120 slotova">120 slotova</option>                                                                           </select>                </div>                   <button class="send" name="submit">NARUCI</button></a>                   </form>                </div>           </div>



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

1. Otvaras 2x <form> tag a samo jednom zatvaras.
2. Mod field nije definisano a zahtevas ga u procesu forme

Ok malo sam pogledao taj tvoj kod posto ja volim da se zezam oko email-ova pa ajde da ti pomognem. Kada koristis PHP mail funkciju ogranicen si u nekim stvarima. Moze se desiti da tvoje poruke mogu biti poslate na gmail ali na yahoo ne. Yahoo ume da blokira smtp ili da ih tretira kao spam.

Preporuka je da koristis neke od poznatijih biblioteka za slanje email-ova.
Ja bi ti preporucio PHPMailer jedan on najkoriscenijih skoro 9 milijona korisnika od kojih su takodje:

Wordpress
Joomla
Drupal
1CRM
SugarCRM
Yii


Nudi ti mnogo stvari a neces imati problema sa sa koriscenjem, na tebi je samo na konfigurises i to je to.

Sama instalacija PHPMaila je tako sto ces preuzeti poslednji verziju, raspakovati na serveru i importovati u tvoju skriptu. Podesis sta zelis da koristis (SMTP) i peglas.

Ja sam uradio ovaj tvoj primer uz PHPMailer pa ti vidi sta je bolje i sigurnije:

<?php   require './PHPMailer/PHPMailerAutoload.php'; // Konfiguracija PHPMailer-a $mailer = new PHPMailer; try {     //$mailer->SMTPDebug = 3;                  // Prikaz debug poruka tokom slanja i konektovanja     $mailer->isSMTP(TRUE);                     // Postavi Mailer da koristi SMTP     $mailer->Host = 'smtp.gmail.com';          // Proizvoljno, koji god ti zelis server     $mailer->SMTPAuth = TRUE;                  // Ukljuci SMTP authentication     $mailer->Username = "example@gmail.com";   // Korisnicki email za logovanje     $mailer->Password = "asd123";              // Lozinka     $mailer->SMTPSecure = 'tls';               // Enkripcija Tls takodje moze biti i SSL     $mailer->Port = 587;                       // Port     if (isset($_POST['submit'])) {         $name = isset($_POST['name']) ? $_POST['name'] : FALSE;         $email = isset($_POST['email']) ? $_POST['email'] : FALSE;         $grad = isset($_POST['grad']) ? $_POST['grad'] : FALSE;         $drzava = isset($_POST['drzava']) ? $_POST['drzava'] : FALSE;         $naziv_servera = isset($_POST['naziv_servera']) ? $_POST['naziv_servera'] : FALSE;         $igra = isset($_POST['igra']) ? $_POST['igra'] : FALSE;         $slotovi = isset($_POST['slotovi']) ? $_POST['slotovi'] : FALSE;         $mailer->From = $email;         // Email posaljioca         $mailer->FromName = "Nova Porudzbina";                      // Ime Posaljioca         $mailer->addAddress($_POST['email'], $_POST['name']);   // Email Primalaca ime opciono         $mailer->isHTML(TRUE);         $mailer->Subject = 'Pristigla vam je nova porudzbina: ' . $naziv_servera;                 // Body                 $body = "<h2 style='background: red; color: #fff;'>Nova Porudzbina</h2>";         $body .= "<b>Ime i Prezime:</b>" . $name . "<br>";         $body .= "<b>Email:</b>" . $email . "<br>";         $body .= "<b>Grad:</b>"  . $grad   ."<br>";         $body .= "<b>Drzava:</b>" . $drzava  ."<br>";         $body .= "<b>Naziv Servera:</b>" . $naziv_servera ."<br>";         $body .= "<b>Igra:</b>" . $igra  ."<br>";         $body .= "<b>Broj Slotova:</b>" . $slotovi ."<br>";         $mailer->Body = $body;         // Posalji         $mailer->send();         echo "Vasa porudzbina je uspesno poslata. Hvala";     } } catch (phpmailerException $ex) {     echo $ex->errorMessage(); } catch (Exception $ex) {     echo $ex->getMessage(); }

Forma:
<html>     <head>         <title>Form</title>         <meta charset="UTF-8">         <meta name="viewport" content="width=device-width, initial-scale=1.0">     </head>     <body>         <div id="order">             <span class="order_slika"><img src="#" style="width:170px;"></i></span>             <span class="order_title">Narucivanje novog servera</span>             <br><br>             <div class="games_side">                 <div class="order_box">                     <span class="info_klijent">Informacije o korisniku:</span>                     <form action="emailProces.php" method="POST">                         <input name="name" placeholder="Ime i Prezime" /><br>                         <input name="email" placeholder="E-mail" /><br>                         <input name="grad" placeholder="Grad" /><br />                         <input name="drzava" placeholder="Drzava" /><br />                              <div id="info_server">                             <span class="info_server">Informacije o serveru:</span>                                 <input name="naziv_servera" placeholder="Naziv Servera" /><br>                                 <input name="igra" value="TeamSpeak 3" readonly  /><br>                                 <select name="slotovi">                                                        <option value="20 slotova">20 slotova</option>                                     <option value="30 slotova">30 slotova</option>                                     <option value="40 slotova">40 slotova</option>                                     <option value="50 slotova">50 slotova</option>                                        <option value="60 slotova">60 slotova</option>                                     <option value="70 slotova">70 slotova</option>                                     <option value="80 slotova">80 slotova</option>                                     <option value="90 slotova">90 slotova</option>                                     <option value="100 slotova">100 slotova</option>                                     <option value="120 slotova">120 slotova</option>                                                                                        </select>                         </div>                         <button class="send" name="submit">NARUCI</button></a>                     </form>                 </div>             </div>          </div>     </body> </html>

Evo i slika kako to izgleda










Batali standardu mail() php funkciju ovo ti je bolje resenje.
Ziveli



offline
  • Pridružio: 31 Maj 2008
  • Poruke: 9

Pozdrav _ivke

Zvuči mi zanimljiva ova klasa. Da li bi mogao samo da mi pojasniš čemu služi ovaj dio u try{} bloku:

//$mailer->SMTPDebug = 3;                  // Prikaz debug poruka tokom slanja i konektovanja     $mailer->isSMTP(TRUE);                     // Postavi Mailer da koristi SMTP     $mailer->Host = 'smtp.gmail.com';          // Proizvoljno, koji god ti zelis server     $mailer->SMTPAuth = TRUE;                  // Ukljuci SMTP authentication     $mailer->Username = "example@gmail.com";   // Korisnicki email za logovanje     $mailer->Password = "asd123";              // Lozinka     $mailer->SMTPSecure = 'tls';               // Enkripcija Tls takodje moze biti i SSL     $mailer->Port = 587;                       // Port

Dakle ako želim da pošaljem email iz standardne email forme na neki email, npr: primjer@domen.com. Naravno domen može biti bilo koji, ne samo gmail, yahoo,hotmail itd ...

Pozdrav

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Taj try blok služi da bi mogao da napraviš exception handler. Recimo desi se neka greška i on kroz catch blok prikaže grešku.

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Sto se tice upravalja izuzecima (Exception's) mozes vise procitati u dokumentaciji php: http://php.net/manual/en/language.exceptions.php

Cela teorija je malo duza tako da ne bi imao toliko vremena da objasnjavam sada sta je Try, Throw, Catch. Tamo imas lepe primere i bolje opisano nego sto bih ti ja objasnio. Nema ljutis!

Ukratko ako ono sto se nalazi u Try bloku ako je FALSE ili se nije izvrsilo baca se Exception to je ono u Catch bloku. Suprotno od ovoga moglo je da se uradi i bez Try/Catch:

if($mailer->isSMTP() != False) {        // ...    $send =  $mailer->send();   // Proveri da li je poslato  if(!$send) {        echo "poslato";  } else {       echo "nije poslato"; } }


Citat:Dakle ako želim da pošaljem email iz standardne email forme na neki email, npr: primjer@domen.com. Naravno domen može biti bilo koji, ne samo gmail, yahoo,hotmail itd ...


Mozes sta god pozelis samo konfigurises PHPMailer i to je to. U ovom primeru ja sam konfigurisao da koristi SMTP <TLS> . Takodje mozes i POP pre SMTP evo primera:

require_once('../class.phpmailer.php'); require_once('../class.pop3.php'); // required for POP before SMTP $pop = new POP3(); $pop->Authorise('pop3.yourdomain.com', 110, 30, 'username', 'password', 1); $mail = new PHPMailer(); $body             = file_get_contents('contents.html'); $body             = eregi_replace("[\]",'',$body); $mail->IsSMTP(); $mail->SMTPDebug = 2; $mail->Host     = 'pop3.yourdomain.com'; $mail->SetFrom('name@yourdomain.com', 'First Last'); $mail->AddReplyTo("name@yourdomain.com","First Last"); $mail->Subject    = "PHPMailer Test Subject via POP before SMTP, basic"; $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test $mail->MsgHTML($body); $address = "whoto@otherdomain.com"; $mail->AddAddress($address, "John Doe"); $mail->AddAttachment("images/phpmailer.gif");      // attachment $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment if(!$mail->Send()) {   echo "Mailer Error: " . $mail->ErrorInfo; } else {   echo "Message sent!"; }    

Sve sto te zanima za ovu biblioteku mozes ovde procitati detaljno:
http://phpmailer.worxware.com/index.php?pg=phpmailer

Ko je trenutno na forumu
 

Ukupno su 1102 korisnika na forumu :: 34 registrovanih, 9 sakrivenih i 1059 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 8u47, A.R.Chafee.Jr., Apok, bladesu, Bubimir, bufanje, draganl, Duh sa sekirom, FOX, Frunze, goxin, GveX, havoc995, Istman, kinez88, Kubovac, kybonacci, mackenzie, mean_machine, menges, mkukoleca, naki011, Papadubi, pedja.st, raptorsi, sevenino, Sir Budimir, Sirius, sombrero, Stanlio, styg, uruk, VP6919, YU-UKI