W prawdzie w niektórych projektach PHP korzystam z systemowej funkcji mail() – choć zazwyczaj odpowiada za nią MSMTP – to najczęściej korzystam z dodatkowych bibliotek/klas i zewnętrznych serwerów SMTP. Jedną z nich jest PHPMailer – i dziś będzie jak w prosty sposób wysłać ze strony w PHP wiadomość e-mail za pośrednictwem tej biblioteki…

PHPMailer

PHPMailer to skrypt biblioteka do wysyłania wiadomości e-mail z PHP, dzięki której możecie korzystać z zewnętrznych serwerów SMTP – niezależnie od tego jak jest ustawiony system (hosting) na którym macie stronę.

Przedstawię 2 przykładowe (modelowe) konfiguracje, oparte na 2 rozwiązaniach/zewnętrznych serwerach SMTP:

  • Gmail – bo pewnie sporo z Was korzysta z tej poczty
  • Mandrill – naprawdę dobre (i tanie) rozwiązanie do wysyłki większej ilości wiadomości

Oczywiście będzie to właściwie najprostsza możliwa działająca konfiguracja, którą musicie dopasować do własnych potrzeb – choćby wstawiając odpowiednie wartości zamiast nadawcy, odbiorcy czy treści.

Nowa wersja PHPMailer

Zanim przedstawię konfigurację PHPMailer dla Gmaila i usługi Mandrill jeszcze 2 małe uwagi, przydatne zwłaszcza dla osób które przesiądą się na nową wersję biblioteki z jakiejś starszej – tak jak chwilę temu ja u znajomego.

Kodowanie znaków

Przed aktualizacją kodowanie znaków w wysyłanych wiadomościach było OK, po aktualizacji zamiast polskich znaków przychodziły krzaki.

Pomogło dodanie linijki:

$mail->CharSet = "UTF-8";

Tuż za:

$mail = new PHPMailer;

Plik „ładowania biblioteki”

Kolejna niespodzianka jaka może Was po aktualizacji spotkać, to konieczność zmiany pliku biblioteki który należy załadować do skryptu PHP.

Kiedyś było to:

require_once('phpmailer/class.phpmailer.php');

Teraz jest:

require_once('phpmailer/PHPMailerAutoload.php');

OK, możemy zaczynać właściwą część wpisu/poradnika, czyli 2 skrypty:

PHPMailer i Gmail

<?php
require_once('phpmailer/PHPMailerAutoload.php'); # patch where is PHPMailer / ścieżka do PHPMailera

$mail = new PHPMailer;
$mail->CharSet = "UTF-8";

$mail->IsSMTP();
$mail->Host = 'smtp.gmail.com'; # Gmail SMTP host
$mail->Port = 465; # Gmail SMTP port
$mail->SMTPAuth = true; # Enable SMTP authentication / Autoryzacja SMTP
$mail->Username = "[email protected]"; # Gmail username (e-mail) / Nazwa użytkownika
$mail->Password = "GMAIL PASSWORD"; # Gmail password / Hasło użytkownika
$mail->SMTPSecure = 'ssl';

#$mail->From = ''; # REM: Gmail put Your e-mail here
$mail->FromName = 'You name'; # Sender name
$mail->AddAddress('[email protected]', 'Name'); # # Recipient (e-mail address + name) / Odbiorca (adres e-mail i nazwa)

$mail->IsHTML(true); # Email @ HTML

$mail->Subject = 'E-mail subject / Tytuł wiadomości';
$mail->Body = 'HTML e-mail body / Treść wiadomości w HTML';
$mail->AltBody = 'Plaint text e-mail body / Treść wiadomości jako tekst';

if(!$mail->Send()) {
echo 'Some error... / Jakiś błąd...';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}

echo 'Message has been sent (OK) / Wiadomość wysłana (OK)';

?>

 PHPMailer i Mandrill

<?php
require_once('phpmailer/PHPMailerAutoload.php'); # patch where is PHPMailer / ścieżka do PHPMailera

$mail = new PHPMailer;
$mail->CharSet = "UTF-8";

$mail->IsSMTP();
$mail->Host = 'smtp.mandrillapp.com'; # Mandrill SMTP host / Adres SMTP Mandrill
$mail->Port = 587; # Mandrill SMTP port
$mail->SMTPAuth = true; # Enable SMTP authentication / Autoryzacja SMTP
$mail->Username = "ACCOUNT E_MAIL"; # Mandrill username / Nazwa użytkownika Mandrill
$mail->Password = "API KEY"; # Mandrill API key / Klucz API
$mail->SMTPSecure = 'tls';

$mail->From = '[email protected]'; # Sender address / Adres nadawcy
$mail->FromName = 'You name'; # Sender name / Nazwa nadawcy
$mail->AddAddress('[email protected]', 'Name'); # Recipient (e-mail address + name) / Odbiorca (adres e-mail i nazwa)

$mail->IsHTML(true); # Email @ HTML

$mail->Subject = 'E-mail subject / Tytuł wiadomości';
$mail->Body = 'HTML e-mail body / Treść wiadomości w HTML';
$mail->AltBody = 'Plaint text e-mail body / Treść wiadomości jako tekst';

if(!$mail->Send()) {
echo 'Some error... / Jakiś błąd...';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}

echo 'Message has been sent (OK) / Wiadomośś wysłana (OK)';

?>

Pamiętajcie by uzupełnić skrypty o Waszą nazwę użytkownika i hasło… ;-)

Zgłoś błąd na stronie

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które - w miarę możliwości - spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. "linki partnerskie", co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte... :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!