Το PHPMailer είναι μια βιβλιοθήκη προγραμμάτων που διαχειρίζεται τη μεταφορά μηνυμάτων ηλεκτρονικού ταχυδρομείου μέσω της PHP. Το PHPMailer χρησιμοποιείται κυρίως για φόρμες επικοινωνίας σε ιστότοπους, αλλά μπορεί επίσης να χρησιμοποιηθεί για την αποστολή προσωπικών μηνυμάτων ηλεκτρονικού ταχυδρομείου.

Τι είναι το PHPMailer;

Το PHPMailer είναι μια επέκταση αλληλογραφίας για την PHP, η οποία αναπτύσσεται και συντηρείται από την κοινότητα της PHP. Τα email που αποστέλλονται με το PHPMailer είναι λιγότερο πιθανό να καταλήξουν στον φάκελο spam σε σύγκριση με αυτά που αποστέλλονται με την ενσωματωμένη λειτουργία αλληλογραφίας της PHP. Αυτό οφείλεται στο γεγονός ότι τα email που γράφονται με το PHPMailer αποστέλλονται χρησιμοποιώντας το πρωτόκολλο SMTP. Το SMTP σημαίνει Simple Mail Transfer Protocol (Απλό Πρωτόκολλο Μεταφοράς Αλληλογραφίας) και χρησιμοποιείται για τη μεταφορά email μέσω του διαδικτύου. Επιπλέον, το PHPMailer υποστηρίζει επίσης email σε μορφή HTML και συνημμένα, σε αντίθεση με την ενσωματωμένη λειτουργία αλληλογραφίας.

Σε τι χρησιμοποιείται το PHPMailer;

Το PHPMailer είναι λίγο πιο κουραστικό στη χρήση σε σύγκριση με άλλους παρόχους υπηρεσιών email ή τα ενσωματωμένα προγράμματα αλληλογραφίας στον υπολογιστή σας, κάτι που ίσως σας κάνει να αναρωτιέστε γιατί ο κόσμος επιλέγει να το χρησιμοποιεί. Το πλαίσιο PHP απλοποιεί τη δημιουργία αυτοματοποιημένων απαντήσεων, όπως αυτές που απαιτούνται για ένα ηλεκτρονικό κατάστημα. Επιπλέον, το PHPMailer είναι επίσης κατάλληλο για φόρμες επικοινωνίας σε ιστότοπους.

Ποιες είναι οι απαιτήσεις για το PHPMailer;

Για να χρησιμοποιήσετε το PHPMailer, χρειάζεστε έναν διακομιστή SMTP. Μπορείτε να επιλέξετε αν θα χρησιμοποιήσετε τον διακομιστή αλληλογραφίας ενός παρόχου ή αν θα ρυθμίσετε τον δικό σας διακομιστή. Συνιστάται να χρησιμοποιήσετε το Composer (ένα πρόγραμμα διαχείρισης πακέτων για PHP) για την εγκατάσταση της επέκτασης PHP.

Tip

Η κατανόηση των βασικών αρχών της PHP αποτελεί μια ακόμη σημαντική προϋπόθεση για τη χρήση του PHPMailer. Το σεμινάριό μας για αρχάριους στη PHP μπορεί να σας βοηθήσει αν αντιμετωπίζετε δυσκολίες με τα βασικά της PHP.

Πώς να εγκαταστήσετε το PHPMailer βήμα προς βήμα

Βήμα 1: Κατεβάστε την τρέχουσα έκδοση του PHPMailer

Κατεβάστε την πιο πρόσφατη έκδοση του PHPMailer. Μπορείτε να το κάνετε αυτό μέσω του Composer ή χειροκίνητα από το GitHub.

Επιλογή 1: Λήψη μέσω του Composer

Εάν έχετε εγκαταστήσει τον διαχειριστή πακέτων Composer, μπορείτε απλά να χρησιμοποιήσετε την παρακάτω εντολή:

composer require phpmailer/phpmailer
bash

Σημαντικό: αν έχετε εγκαταστήσει το PHPMailer μέσω του Composer, πρέπει να συμπεριλάβετε το Composer στον κώδικα PHP σας για να μπορείτε να στέλνετε μηνύματα ηλεκτρονικού ταχυδρομείου.

Μπορείτε να χρησιμοποιήσετε την ακόλουθη γραμμή κώδικα:

require_once "vendor/autoload.php";
bash

Η λέξη-κλειδί**«require_once»**διασφαλίζει ότι το Composer θα εισαχθεί μόνο μία φορά. Διαφορετικά, ενδέχεται να προκύψουν σφάλματα στο πρόγραμμα. Η εγκατάσταση μέσω του Composer έχει πλέον ολοκληρωθεί.

Επιλογή 2: Λήψη απευθείας από το GitHub

Τα αρχεία πηγαίου κώδικα του PHPMailer μπορούν επίσης να ληφθούν χειροκίνητα, κάνοντας κλικ στο κουμπί «Code» στο αντίστοιχο αποθετήριο του GitHub και κατεβάζοντας το αρχείο ZIP. Εάν το Git είναι εγκατεστημένο στο σύστημά σας, μπορείτε εναλλακτικά να κλωνοποιήσετε το αποθετήριο χρησιμοποιώντας μια εντολή γραμμής εντολών.

Βήμα 2: Αποσυμπίεση αρχείων

Εάν έχετε κατεβάσει τον πηγαίο κώδικα του PHPMailer με το χέρι, πρέπει να ανοίξετε τα αρχεία ZIP. Επιλέξτε τη θέση όπου θέλετε να εγκαταστήσετε το PHPMailer και ενσωματώστε το PHPMailer στο σενάριό σας. Αν υποθέσουμε ότι έχετε αποσυμπιέσει τα αρχεία του PHPMailer σε έναν φάκελο με το όνομα PHPMailer, μπορείτε να χρησιμοποιήσετε τις ακόλουθες γραμμές κώδικα:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
/*Class for handling exceptions and errors*/
require 'C:/PHPMailer/src/Exception.php';
/*PHPMailer class*/
require 'C:/PHPMailer/src/PHPMailer.php';
/*SMTP class needed to connect to an SMTP server*/.
require 'C:/PHPMailer/src/SMTP.php';
/*When creating a PHPMailer object, pass the parameter ‘true’ to activate exceptions (messages in the event of an error)*/
$email = new PHPMailer(true);
php

Πώς να στέλνετε email με το PHPMailer βήμα προς βήμα

Βήμα 1: Προσθήκη χώρων ονομάτων

Βεβαιωθείτε ότι οι χώροι ονομάτων είναι σωστοί, ώστε να έχετε πρόσβαση στο PHPMailer. Για αυτό απαιτούνται Use δηλώσεις, οπότε ο κώδικάς σας θα πρέπει να περιλαμβάνει τις ακόλουθες γραμμές:

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

Μπορείτε να αποκτήσετε πρόσβαση στις μεμονωμένες τάξεις προσθέτοντας τα ονόματά τους μετά την τελευταία κάθετο.

Βήμα 2: Εντοπισμός σφαλμάτων

Αν και το PHPMailer αποτελεί έναν πολύ αξιόπιστο τρόπο αποστολής email, ενδέχεται να προκύψουν σφάλματα κατά καιρούς. Η ενσωμάτωση μιας δήλωσης try-catch στη διαδικασία αποστολής email θα αποτρέψει την αποστολή ευαίσθητων δεδομένων από τον διακομιστή αλληλογραφίας σας προς τους χρήστες ως μήνυμα σφάλματος:

try {
    // Try to create a new instance of PHPMailer class, where exceptions are enabled
    $mail = new PHPMailer (true);
// (...)
} catch (Exception $e) {
        echo "Mailer Error: ".$e->getMessage();
}
php

Βήμα 3: Πραγματοποίηση ελέγχου ταυτότητας μέσω SMTP

Για να χρησιμοποιήσετε το PHPMailer, πρέπει να πραγματοποιήσετε έλεγχο ταυτότητας μέσω SMTP. Εισάγετε τη διεύθυνση του διακομιστή αλληλογραφίας σας δίπλα στο κατάλληλο πρωτόκολλο (είτε TLS/SSL είτε SMTP) και προσθέστε τη θύρα μαζί με το όνομα χρήστη και τον κωδικό πρόσβασής σας. Το πρωτόκολλο και η θύρα που χρησιμοποιείτε εξαρτώνται από τον πάροχο υπηρεσιών αλληλογραφίας σας. Μπορείτε να βρείτε τα αντίστοιχα στοιχεία του διακομιστή στον ιστότοπο του παρόχου υπηρεσιών αλληλογραφίας.

$mail->isSMTP();
$mail->SMTPAuth = true;
// Personal data
$mail->host = "smtp.domain.com";
$mail->Port = 587;
$mail->username = "name.surname@domain.com";
$mail->password = "testpassword4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
php

Αντί για ENCRYPTION_STARTTLS, μπορείτε επίσης να χρησιμοποιήσετε ENCRYPTION_SMTPS ως μέθοδο κρυπτογράφησης. Με ENCRYPTION_SMTPS, η σύνδεση δημιουργείται μόνο εάν είναι ενεργό το TLS. Αυτό σημαίνει ότι η επικοινωνία με έναν διακομιστή είναι δυνατή μόνο εάν ο διακομιστής υποστηρίζει τα μέτρα κρυπτογράφησης που απαιτούνται για την ασφαλή μετάδοση. Με το StartTLS, η σύνδεση με τον διακομιστή αλληλογραφίας δημιουργείται χωρίς κρυπτογράφηση. Μόνο στη συνέχεια εφαρμόζεται η κρυπτογράφηση. Εάν δεν είναι δυνατή η εφαρμογή κρυπτογράφησης TLS, η υπόλοιπη ανταλλαγή δεδομένων θα πραγματοποιηθεί χωρίς κρυπτογράφηση.

Το SMTPS προσφέρει υψηλότερο επίπεδο ασφάλειας, ενώ το StartTLSέχει καλύτερη συμβατότητα. Λόγω της συμβατότητάς του, το StartTLS αποτελεί γενικά την προτιμώμενη επιλογή.

Βήμα 4: Αναφέρετε τον παραλήπτη του email

Τώρα μπορείτε να ορίσετε τους παραλήπτες του email σας στο σενάριο.

// Sender
$mail->setFrom('info@example.com', 'name');
// Recipient, the name can also be stated
$mail->addAddress('info@example.com', 'name');
// Copy
$mail->addCC('info@example.com');
// Blind copy
$mail->addBCC('info@example.com', 'name');
php

Βήμα 5: Προσθέστε το περιεχόμενο του μηνύματος

Μην ξεχάσετε το περιεχόμενο του email σας. Αυτό συνήθως αποτελείται από ένα θέμα και ένα κείμενο, τα οποία μπορούν να δημιουργηθούν τόσο σε μορφή HTML όσο και σε μορφή χωρίς HTML. Είναι σημαντικό να σημειωθεί ότι παλαιότερα προγράμματα ενδέχεται να μην υποστηρίζουν το τρέχον πρότυπο HTML5, οπότε ίσως είναι καλή ιδέα να συντάξετε το email σας χρησιμοποιώντας HTML.

Μπορείτε επίσης να στέλνετε εύκολα συνημμένα με το PHPMailer χρησιμοποιώντας τη συνάρτηση addAttachment. Με το PHPMailer μπορείτε επίσης να στέλνετε εικόνες, αρχεία ήχου, έγγραφα, βίντεο και GIF. Μπορείτε επίσης να μετονομάσετε τα συνημμένα σας χρησιμοποιώντας έναν προαιρετικό δεύτερο παράμετρο που μεταβιβάζεται στη συνάρτηση.

$mail->isHTML(true);
// Subject
$mail->Subject = 'The subject of your mail';
// HTML content
$mail->Body = 'The mail text as HTML content. <b>bold</b> elements are allowed.';
$mail->AltBody = 'The text as a simple text element';
// Add attachment
$mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
php

Βήμα 6: Χρησιμοποιήστε τη σωστή κωδικοποίηση χαρακτήρων

Συνιστάται να ενεργοποιήσετε την κωδικοποίηση UTF-8 στο PHPMailer, ώστε να αποφύγετε σφάλματα εμφάνισης κατά την επεξεργασία γραμμάτων με διακριτικά από άλλες γλώσσες, ειδικά όταν χρησιμοποιείτε συνημμένα αρχεία. Μπορείτε να το κάνετε αυτό προσθέτοντας τις ακόλουθες γραμμές κώδικα στο σενάριο PHP σας:

$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
php

Βήμα 7: Αποστολή email

Τώρα ήρθε η ώρα να στείλετε το email σας. Χρησιμοποιήστε την παρακάτω εντολή για να το κάνετε:

$mail->send();
php

Καλό είναι να τοποθετήσετε όλο τον κώδικα που εμφανίζεται στο αίτημα αποστολής μέσα στο μπλοκ της δήλωσης try του σεναρίου σας, ώστε να μπορείτε να εντοπίσετε τυχόν σφάλματα.

Παράδειγμα κώδικα για την αποστολή email με το PHPMailer

Παρακάτω θα βρείτε όλο τον κώδικα που χρειάζεστε για να στείλετε ένα email με συνημμένη εικόνα σε έναν παραλήπτη της επιλογής σας χρησιμοποιώντας το PHPMailer:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
// Enable or disable exceptions via variable
$debug = true;
try {
    // Create instance of PHPMailer class
    $mail = new PHPMailer($debug);
     if ($debug) {
         // issue a detailed log
        $mail->SMTPDebug = SMTP::DEBUG_SERVER; 
    }
    // Authentication with SMTP
    $mail-> isSMTP();
    $mail->SMTPAuth = true;
    // Login
    $mail->Host = "smtp.domain.com";
    $mail->Port = 587;
    $mail->Username = "name.surname@domain.com";
    $mail->Password = "testpassword4321";
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->setFrom('info@example.com', 'name');
    $mail->addAddress('info@example.com', 'name');
    $mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
    $mail->CharSet = 'UTF-8';
    $mail->Encoding = 'base64';
    $mail->isHTML(true);
    $mail->Subject = 'The subject of your mail';
    $mail->Body = 'The mail text in HTML content. <b>bold</b> elements are allowed.';
    $mail->AltBody = 'The text as a simple text element';
    $mail->send();
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: ".$e->getMessage();
}
php
Go to Main Menu