PHP: emailuri cu PHP Mailer


Am scris astăzi despre trimiterea de emailuri din PHP via mail(). O soluţie ceva mai dezvoltată este PHP Mailer pe care am început să o folosesc şi eu recent datorită unor avantaje pe care le prezintă. Într-un comentariu la articolul anterior Daniel recomanda două soluţii: SwiftMailer şi PHPMailer. Primul se laudă a fi mai bun decât al doilea, explicându-se inclusiv prin faptul că celălalt ar fi fost abandonat. Ciudat. La primul văd data 26 martie 2008, pe când la al doilea 10 noiembrie 2008. Nu mi se pare PHP Mailer a fi un proiect abandonat. Mai ales că doar de câteva zile, adică de la 1 ianuarie, au actualizat PHP Mailer–ML, unde ML vine de la Mailing List (Manager and Newsletter Manager).

image

După cum vedeţi din captura de mai sus, PHP Mailer-ML oferă facilităţi avansate de administrare a persoanelor înscrise (pune la dispoziţie inclusiv formularul de înscriere), a listelor (newsletter-elor), putându-se dezvolta şi “campanii” (pentru obiective comerciale). Nu am testat produsul dar dacă vă interesează vă invit să o faceţi. Folosesc însă PHP Mailer. Aceasta înseamnă de fapt o clasă, un fişier PHP (la nevoie două), ce trebuie inclus în pagina unde doriţi să faceţi trimiterea de emailuri. Pe situl produsului veţi găsi diverse exemple şi o prezentare mai detaliată a proprietăţilor şi metodelor. Mai jos aveţi ca idee un exemplu.

[PHP]require(„class.phpmailer.php”);

$mail = new PHPMailer();

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = „smtp.example.com”; // SMTP server

$mail->From = „from@example.com”;
$mail->AddAddress(„myfriend@example.net”);

$mail->Subject = „First PHPMailer Message”;
$mail->Body = „Hi! \n\n This is my first e-mail sent through PHPMailer.”;
$mail->WordWrap = 50;

if(!$mail->Send()) {
echo ‘Message was not sent.’;
echo ‘Mailer error: ‘ . $mail->ErrorInfo;
} else {
echo ‘Message has been sent.’;
} [/PHP]

De ce aţi folosi PHP Mailer în loc de mail()? Dacă tot ce vă trebuie e un sistem de notificare (membru nou, eroare ori altceva), cred că funcţia nativă PHP e suficientă. Când doriţi însă mai mult de la emailuri folosirea clasei PHP Mailer reduce din efortul de programare. Gândiţi-vă doar antetele ce „urâte” sunt. Cu PHP Mailer indici elegant $mail->CharSet = „iso-8859-2”; sau $mail->From = „eu@insumi.ro”;. Cu cât vă cresc pretenţiile cu atât clasa e de mai mare ajutor.

Eu am optat pentru PHP Mailer pentru că uşurează trimiterea de imagini în email. Am văzut anterior că se pot trimite uşor emailuri HTML cu funcţia mail(). Evident că acolo se pot pune taguri IMG pentru a afişa imagini. Dar ele se vor încărca de pe server. Dacă dispar de pe server destinatarul nu le va mai vedea în email. Există varianta trimiterii imaginilor în email, embedded. Desigur că atunci emailul devine ceva mai mare (de regulă nu se trimit embed imagini de dimensiuni maaari, ci mici, care să contribuie la designul emailului), dar imaginile se vor încărca independent de server. S-ar putea să spuneţi: să se încarce de pe server, nici o problemă. Eu am însă un motiv suplimentar să doresc să le „încorporez”. Dacă cineva citeşte emailurile cu Outlook să zicem, deconectează laptopul de la internet şi vrea să citească în tihnă pe avion sau în pat poşta (adică offline), emailurile ce încarcă imaginile de pe internet… nu vor arăta prea bine.

În fine. De la caz la caz imaginile în email merită să fie făcute cu trimitere sau cu embed. Veţi decide Dvs. Important este că PHP Mailer uşurează munca. Există în primul rând metoda AddEmbeddedImage(). La aceasta indicaţi imagine cu imagine cid-ul şi sursa. Dar există o metodă mai teribilă: MsgHTML(). Aceasta se va ocupa să facă singură toate imaginile (care nu sunt indicate cu referinţă absolută, adică nu cu http://….) „încorporate” în email. Am testat-o şi merge foarte bine.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (7 evaluări, media: 3,57 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *