Како послати е-мејл у PHP-у користећи PHPMailer

ПХПМаилер за слање маилова

Постоји много PHP библиотека (енгл. library), а PHPMailer је једна од најћешћих избора многих корисника. Покренута је 2000. године и од тада је довољно пута удомљена од стране програмера управо за слање мејлова у PHP-у. Овај чланак спровешће вас кроз другачији приступ слању мејлова који се разликује од класичне mail() функције.

Генерално говорећи, PHPMailer је алтернатива mail() функцији која је најчешћа, међутим постоји више сценарија када mail() фукционалност није довољно флексибилна.

7 разлога због којих треба користити PHPMailer пре него mail() функцију

Постоји неколико предности због којих је PHPMailer практичнији:

  • Object Oriented – За mail() функцију се не може рећи да је Object Oriented, док PHPMailer поседује интерфејс који управо то јесте.
  • Заглавља и избегавање прљавог кода – У PHPMailer-у нема потребе за стварањем прљавог кода. Није потребно креирати заглавља на начин на који се то ради у mail() фукцији.
  • Ограничења local mail сервера – mail() функција обично потражује local mail сервер за слање е-мејлова док PHPMailer користи SMTP.
  • Грешка при слању на више језика – Ова библиотека омогућава слање “error” порука на више од 40 језика када слање поруке закаже.
  • SSL Аутентификација – PHPMailer подржава SMTP протокол и аутентификацију преко SSL и TLS.
  • Plain текст верзија е-мејла – Подржано је слање “plain” текста у е-мејловима за не-HTML е-мејл клијенте.
  • Подршка заједнице – Иза PHPMailer-а стоји активна заједница корисника и програмера који га чине ажурним.

Апликације

Популарни CMS системи користе PHPMailer библиотеку и међу њима су Joomla, Drupal и WordPress.

Слање е-мејлова користећи PHPMailer са локалног сервера

Е-мејлови се могу слати са локалног сервера користећи следећи код:

<?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 = "Ovo je mail u HTML-u";
$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"; 
}

Слање е-мејлова са прилогом

Користећи PHPMailer могу се слати и е-мејлови са прилогом уз помоћ следећег кода:

<?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 = "Mail u HTMLu";
$mail->AltBody = "Tekstualni mail";
if(!$mail->send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Mail je uspešno poslat";
}

File.txt и images/profile.png су прикачени као прилози. Треба да се налазе се у истом директоријуму. Прилози се могу додавати позивањем addAttachemnt што је у основи објекат у PHPMailer-у. Неопходно је позивати овај објекат сваки пут када се додаје прилог.

Слање е-мејлова користећи SMTP

Пошта се може слати и коришћењем SMTP-а али то захтева аутентификацију да би е-мејлови били послати са другог хоста. У питању је исти процес као када направите налог на Gmail-у и шаљете пошту преко тог сервиса. SMTP је у основи протокол који шаље захтев за е-мејлом на мејл сервер и након верификације шаље ту пошту даље на удаљени сервер.

Можете искористити следећи пример за слање е-маила користећи SMTP протокол Gmail сервера:

<?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 = "Mail body in HTML";

$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";

}

Пре слања е-мејлова преко SMTP-а, hostname, број порта и енкрипција су неопходни. Такође је потребно користити косничко име и лозинку за аутентификацију. Битно је напоменути да уколико се на Gmail-у користи двострука аутентификација, пошту није могуће слати.

Предност коришћења SMTP-а

Највећа предност коришћења удаљеног SMTP-а у PHPMailer-у је та што уколико је подешен на неко друго име домена, које није “local domain”, биће означен као SPAM на примаочевом серверу. Ево сценарија: претпоставимо да је ваш домен abc.rs, међутим ви наведете себе као ваше-ime@gmail.com и пошаљете на адресу imeprimaoca@yahoo.com, тада ће Yahoo сервер ту поруку означити као SPAM.

Преузимање е-мејлова кроз POP3

PHPMailer подржава POP-before-SMTP верификацију за слање е-мејлова. Омогућава слање поште користећи SMTP и аутентификацију кроз POP. Међутим, може се примати пошта са мејл сервера користећи POP3.

Error поруке у PHPMailer-у

$mail ->ErrorInfo се користи за повратне поруке на више од 40 језика. Да би се виделе Error поруке на било ком језику потребно је копирати језички директоријум из PHPMailer-овог изворног кода у директоријум пројекта.

Ево како изгледа када је PHPMailer објекат подешен на руски језик:

$mail->setLanguage("ru");

PHPMailer је поуздано е-мејл решење

У овом тексту је укратко покривен алтернативни приступ слању е-мејлова кроз PHP. Ако сте PHP програмер не можете побећи од тога да шаљете мејлове програмирањем. Можете узети у обзир и неке друге сервисе за ову сврху, па размотрите и алтернативе PHPMailer-у као што су Zend mail или swiftmailer.

ПРИЈАВИТЕ СЕ ЗА НАЈНОВИЈЕ ТЕКСТОВЕ СА НАШЕГ БЛОГА!

Tags: , , , , ,

Нема коментара.

Пошаљи коментар