Kako da kreirate kontakt formu

Ovde odradićemo dva scenarija. Prvi je onaj lakši a to je putem WordPress-a.
Kada je u pitanju wordpress postoji plugin za to i tu se nećemo previše baviti. Plugin je Contact Form 7.   Nakon instalcije i podešavanja morate da postaite u svom wordpressu SMTP konekciju kako bi vaši emailovi stizali bez problema. A to možete da uradite pomoću našeg drugog članka SMTP i WordPress.

Onaj drugi deo koji je „teži“ jeste za HTML sajtove ili one koji imaju kontakt stranu koja je ručno urađena i ne koriste ni jedan CMS.

Pre svega potrebno je da skinete PHPMailer klikom na „Clone or downlaod“ a zatim na „Download ZIP“.

Kao na slici ispod

phpmailer Kako da kreirate kontakt formu

Nakon ovoga je potrebno da taj zip fajl postavite na svoj hosting nalog.

cPanel > File Manager > otvorite public_html folder i unutar njega opcija „upload“.

Kada ste završili upload onda desni klik na zip fajl i extract kao na slici:

phpmailer2 Kako da kreirate kontakt formu

Sada kada smo i to raspakovali onda je potrebno da uradimo našu stranu.
Naš primer ima sledeća polja:

<form action="kontaktforma.php" method="post">
    Ime:<br>
    <input type="text" id="fname" name="firstname" placeholder="Your name.."><br>
    Prezime:<br>
    <input type="text" id="lname" name="lastname" placeholder="Your last name.."><br>
    Email:<br>
    <input type="text" id="email" name="email"><br>
    Text:<br>
    <textarea id="tekst" name="tekst" placeholder="Write something.." style="height:200px"></textarea><br>
    <input type="submit" value="Pošalji"><br>
  </form>

Vaša kontakt forma svakako izgleda drugačije i ima drugačije nazive input elemanata i više ili manje polja, stim nemojte bukvalno da copy/paste već mini podešavanja koja su vezana za vašu kontakt formu.

Ključna stvar ovde jeste opcija u <form> a to je „action=“kontaktforma.php“ a to znaci da kada se klikne na „Pošalji“ time se šalje sadržaj polja na tu php stranu u našem slučaju kontaktforma.php (može biti ista strana a može biti i eksterna).

Sada ide podešavanj SMTP i PHPmailera za podatke koje smo poslali pomoću HTML kontakt forme.

PHPMailer izgleda ovako:

<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

//Load Composer's autoloader
require 'vendor/autoload.php';

//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
    //Server settings
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host       = 'smtp.example.com';                     //Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   //Enable SMTP authentication
    $mail->Username   = '[email protected]';                     //SMTP username
    $mail->Password   = 'secret';                               //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            //Enable implicit TLS encryption
    $mail->Port       = 465;                                    //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`

    //Recipients
    $mail->setFrom('[email protected]', 'Mailer');
    $mail->addAddress('[email protected]', 'Joe User');     //Add a recipient
    $mail->addAddress('[email protected]');               //Name is optional
    $mail->addReplyTo('[email protected]', 'Information');
    $mail->addCC('[email protected]');
    $mail->addBCC('[email protected]');

    //Attachments
    $mail->addAttachment('/var/tmp/file.tar.gz');         //Add attachments
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    //Optional name

    //Content
    $mail->isHTML(true);                                  //Set email format to HTML
    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

Sada malo pojašnjenje u vezi ovog koda:
1* – $_POST[’email’] je email adresa koju je vaš posetilac uneo iz kontakt forme ovo [’email’] je u stvari <input name=’email’….> zavisno od vase kontakt forme kako ste nazvali taj input unos.
2* – U ovom redu kada vi kliknete na replay u svom email klijentu ko dobija odgovor uvek je isto kao i onaj ko je poslao kao u našem primeru.
3* – U ovom redu unosite vašu email adresu odnosno ko prima email iz kontakt forme
4* – Naslov ovde može i da stoji $_POST[naslov’] odnosno HTML <input name=’naslov’…> zavisno od vase kontakt forme. Mi u nasem primeru nismo imali polje za naslov.
5* – U ovom redu je tekst bez html-a već čist samo tekst.
6* – Ovde je moguće da se i HTML ubaci u sam body emaila jer je označeno odmah u sledećem redu da je email HTML (šta pod ovim podrazumevam wordpress članak može slikovito da vam pokaze OVDE)

Nakon ovoga je ostalo samo da izmenite tekst „Message sent!“ i error u vaše šta vi želite da pišete i to je sve.

Ispod možete da vidite kako smo mi i HTML formu i PHP stavili u jednom fajlu koji se zove kontaktforma.php

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require '/home/username/public_html/PHPMailer-master/src/Exception.php';
require '/home/username/public_html/PHPMailer-master/src/PHPMailer.php';
require '/home/username/public_html/PHPMailer-master/src/SMTP.php';

//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
    //Server settings
    $mail->SMTPDebug = false;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host       = 'mail.domen.tld';                     //Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   //Enable SMTP authentication
    $mail->Username   = '[email protected]';                     //SMTP username
    $mail->Password   = 'lozinka od email adrese iznad';                               //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;            //Enable implicit TLS encryption
    $mail->Port       = 587;                                    //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`

    //Recipients
    $mail->setFrom($_POST['email'], $_POST['firstname']." ".$_POST['lastname']); 
    $mail->addAddress('[email protected]');     //unosite email adresu na koju ce stizati poruke sa konakt forme
    $mail->addReplyTo($_POST['email'], $_POST['firstname']." ".$_POST['lastname']);


    //Content
    $mail->isHTML(true);                                  //Set email format to HTML
    $mail->Subject = "Kontakt sa sajta"; //ukoliko imate polje za naslov onda unesite ovde
    $mail->Body    = $_POST['tekst'];
    $mail->AltBody = $_POST['tekst'];

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

Mala napomena, ukoliko nakon postavljanja forme vam stiže veći broj spam mailova na vašu adresu potrebno je da postavite i https://www.google.com/recaptcha/intro/v3.html

Scroll to Top