Kako poslati e-mail u PHP-u koristeći PHPMailer

PHPMailer za slanje mailova

Postoji mnogo PHP library-a, a PHPMailer je jedna od najćešći izbora mnogih korisnika. Pokrenuta je 2000. godine i od tada je dovoljno puta udomljena od strane programera upravo za slanje mejlova u PHP-u. Ovaj članak sprovešće vas kroz drugačiji pristup slanju mejlova koji se razlikuje od klasične mail() funkcije.

Generalno govoreći, PHPMailer je alternativa mail() funkciji koja je najčešća, međutim postoji više scenarija kada mail() fukcionalnost nije dovoljno fleksibilna.

7 razloga zbog kojih treba koristiti PHPMailer pre nego mail() funkciju

Postoji nekoliko prednosti zbog kojih je PHPMailer praktičniji:

  • Object Oriented – Za Mail() funkciju se ne može reći da je object oriented, dok PHPMailer poseduje interfejs koji upravo to jeste.
  • Zaglavlja i izbegavanje prljavog koda – U PHPMailer-u nema potrebe za stvaranjem prljavog koda. Nije potrebno kreirati zaglavlja na način na koji se to radi u mail() fukciji.
  • Ograničenja local mail servera – Mail() funkcija obično potražuje local mail server za slanje e-mailova dok PHPMailer koristi SMTP.
  • Greška pri slanju na više jezika – Ovaj library omogućava slanje error poruka na više od 40 jezika kada slanje poruke zakaže.
  • SSL Autentifikacija – PHPMailer podržava SMTP protokol i autentifikaciju preko SSL i TLS.
  • Plain tekst verzija e-maila – Podržano je slanje plain teksta u e-mailovima za ne-HTML email klijente.
  • Podrška zajednice – Iza PHPMailer-a stoji aktivna zajednica korisnika i programera koji ga čine ažurnim.

Aplikacije

Popularni CMS sistemi koriste PHPmailer library i među njima su Joomla, Drupal i WordPress.

Slanje emailova koristeći PHPMailer sa lokalnog servera

E-mailovi se mogu slati sa lokalnog servera koristeći sledeći kod:

<?php require_once "vendor/autoload.php"; //PHPMailer Object 
$mail = new PHPMailer;  
$mail->From = "from@yourdomain.com"; // Adresa mora postojati u cPanelu
$mail->FromName = "Vase ime"; // Ime i prezime pošiljaoca
$mail->addAddress("recepient1@example.com", "Ime primaoca"); 
$mail->addReplyTo("reply@yourdomain.com", "Reply"); //Adresa za odgovor
$mail->addCC("cc@example.com"); //CC i BCC polja
$mail->addBCC("bcc@example.com"); 
$mail->isHTML(true); //HTML ili tekstualni mail 
$mail->Subject = "Tekst naslova"; 
$mail->Body = "<i>Ovo je mail u HTML-u</i>";
$mail->AltBody = "Ovo je tekstualni mail"; 
if(!$mail->send()) 
{
echo "Mailer Error: " . $mail->ErrorInfo; 
} 
else { echo "Mail je uspešno poslat"; 
}
if(!$mail->send()) 
{ 
echo "Mailer Error: " . $mail->ErrorInfo; 
} 
else 
{ 
echo "Mail je uspešno poslat"; 
}

Slanje e-mailova sa prilogom

Koristeći PHPMailer mogu se slati i e-mailovi sa prilogom uz pomoć sledećeg koda:

<?php
require_once "vendor/autoload.php";
$mail = new PHPMailer;
$mail->From = "from@vasdomen.com";
$mail->FromName = "Vaše ime";
$mail->addAddress("recipient1@example.com", "Recipient Name"); 
//Provide file path and name of the attachments
$mail->addAttachment("file.txt", "File.txt");
$mail->addAttachment("images/profile.png"); //Filename is optional
$mail->isHTML(true);
$mail->Subject = "Tekst naslova";
$mail->Body = "<i>Mail u HTMLu</i>";
$mail->AltBody = "Tekstualni mail";
if(!$mail->send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Mail je uspešno poslat";
}

File.txt i images/profile.png su prikačeni kao prilozi. Treba da se nalaze se u istom direktorijumu. Prilozi se mogu dodavati pozivanjem addAttachemnt što je u osnovi objekat u PHPMailer-u. Neophodno je pozivati ovaj objekat svaki put kada se dodaje prilog.

Slanje e-mailova koristeći SMTP

Pošta se može slati i korišćenjem SMTP-a ali to zahteva autentifikaciju da bi e-mailovi bili poslati sa drugog hosta. U pitanju je isti proces kao kada napravite nalog na Gmailu i šaljete poštu preko tog servisa. SMTP je u osnovi protokol koji šalje zahtev za e-mailom na mail server i nakon verifikacije šalje tu poštu dalje na udaljeni server.

Možete iskoristiti sledeći primer za slanje e-maila koristeći SMTP protokol Gmail servera:

<?php

require_once "vendor/autoload.php";

$mail = new PHPMailer;

//Enable SMTP debugging.

$mail->SMTPDebug = 3;

//Set PHPMailer to use SMTP.

$mail->isSMTP();

//Set SMTP host name

$mail->Host = "smtp.gmail.com";

//bitno je da podešavanje ispod ostavite na true

$mail->SMTPAuth = true;

//Provide username and password

$mail->Username = "name@gmail.com";

$mail->Password = "super_secret_password";

//If SMTP requires TLS encryption then set it

$mail->SMTPSecure = "tls";

//Set TCP port to connect to

$mail->Port = 587;

$mail->From = "name@gmail.com";

$mail->FromName = "Full Name";

$mail->addAddress("name@example.com", "Recepient Name");

$mail->isHTML(true);

$mail->Subject = "Subject Text";

$mail->Body = "<i>Mail body in HTML</i>";

$mail->AltBody = "This is the plain text version of the email content";

if(!$mail->send())

{

echo "Mailer Error: " . $mail->ErrorInfo;

}

else

{

echo "Mail je uspešno poslat";

}

Pre slanja e-mailovo preko SMTP-a, hostname, broj porta i enkripcija su neophodni. Takođe je potrebno koristiti kosničko ime i lozinku za autentifikaciju. Bitno je napomenuti da ukoliko se na Gmailu koristi dvostruka autentifikacija, poštu nije moguće slati.

Prednost korišćenja SMTP-a

Najveća prednost korišćenja udaljenog SMTP-a u PHPMailer-u je ta što ukoliko je podešen na neko drugo ime domena, koje nije local domain, biće označen kao SPAM na primaočevom serveru. Evo scenarija: pretpostavimo da je vaš domen abv.rs, međutim vi navedete sebe kao vaše-ime@gmail.com i pošaljete na adresu imeprimaoca@yahoo.com, tada će Yahoo server tu poruku označiti kao SPAM.

Preuzimanje e-mailova kroz POP3

PHPMailer podržava POP-before-SMTP verifikaciju za slanje e-mailova. Omogućava slanje pošte koristeći SMTP i autentifikaciju kroz POP. Međutim, može se primati pošta sa mail servera koristeći POP3.

Error poruke u PHPMailer-u

$mail ->ErrorInfo se koristi za povratne poruke na više od 40 jezika. Da bi se videle Error poruke na bilo kom jeziku potrebno je kopirati jezički direktorijum iz PHPMailer-ovog izvornog koda u direktorijum projekta.

Evo kako izgleda kada je PHPMailer objekat podešen na ruski jezik:

$mail->setLanguage("ru");

PHPMailer je pouzdano e-mail rešenje

U ovom tekstu je ukratko pokriven alternativni pristup slanju e-mailova kroz PHP. Ako ste PHP programer ne možete pobeći od toga da šaljete mejlove programiranjem. Možete uzeti u obzir i neke druge servise za ovu svrhu, pa razmotrite i alternative PHPMailer-u kao što su Zend mail ili swiftmailer.

PRIJAVITE SE ODMAH ZA NAJNOVIJE TEKSTOVE SA NAŠEG BLOGA!

 

Tags: , ,

One Response

  1. Ivan Petrović април 19, 2016 at 9:23 pm #

    Moguće je slati poruke sa Gmail naloga koji ima uključenu autentifikaciju samo za takve prilike mora da se generiše posebna lozinka za tu aplikaciju (Moj nalog -> Prijavljivanje i bezbednost -> Lozinke za aplikacije)

Submit Comment