Πώς να στείλετε email χρησιμοποιώντας τη συνάρτηση PHP mail().
⚡ Έξυπνη Σύνοψη
Το PHP mail είναι η ενσωματωμένη συνάρτηση που στέλνει email απευθείας από ένα σενάριο PHP χρησιμοποιώντας τις ρυθμίσεις SMTP του διακομιστή. Αυτή η αναλυτική παρουσίαση καλύπτει τη σύνταξη και τις παραμέτρους mail(), τη διαμόρφωση του SMTP στο php.ini, τον καθαρισμό της εισόδου χρήστη με το filter_var, την αποστολή ασφαλούς αλληλογραφίας και τη χρήση PHP.Mailγια αξιόπιστη παράδοση.

Τι είναι το PHP mail;
Το PHP mail είναι η ενσωματωμένη συνάρτηση PHP που χρησιμοποιείται για την αποστολή email από PHP scripts.
Η συνάρτηση αλληλογραφίας δέχεται τις ακόλουθες παραμέτρους:
- Θέμα
- Το μήνυμά σας
- Διευθύνσεις ηλεκτρονικού ταχυδρομείου CC ή BCC
Γιατί και πότε να χρησιμοποιήσετε PHP mail
Η συνάρτηση αλληλογραφίας είναι χρήσιμη σε πολλές περιπτώσεις:
- Είναι ένας οικονομικά αποδοτικός τρόπος ενημέρωσης των χρηστών για σημαντικά γεγονότα.
- Επιτρέψτε στους χρήστες να επικοινωνήσουν μαζί σας μέσω email παρέχοντας μια φόρμα επικοινωνίας στον ιστότοπο που αποστέλλει email το παρεχόμενο περιεχόμενο.
- Οι προγραμματιστές μπορούν να το χρησιμοποιήσουν για να λαμβάνουν μηνύματα σφάλματος συστήματος μέσω email.
- Μπορείτε να το χρησιμοποιήσετε για να στείλετε email στους συνδρομητές σας στο newsletter.
- Μπορείτε να το χρησιμοποιήσετε για να στείλετε συνδέσμους επαναφοράς κωδικού πρόσβασης σε χρήστες που έχουν ξεχάσει τους κωδικούς πρόσβασής τους.
- Μπορείτε να το χρησιμοποιήσετε για να στείλετε μέσω email συνδέσμους ενεργοποίησης και επιβεβαίωσης. Αυτό είναι χρήσιμο κατά την εγγραφή χρηστών και την επαλήθευση των διευθύνσεων email τους.
Αποστολή αλληλογραφίας με χρήση PHP
Η συνάρτηση αλληλογραφίας PHP έχει την ακόλουθη βασική σύνταξη.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
ΕΔΩ,
- "$to_email_address" είναι η διεύθυνση email του παραλήπτη της αλληλογραφίας
- Το "$subject" είναι το θέμα του email
- "$message" είναι το μήνυμα που πρέπει να σταλεί.
- Το «[$headers]» είναι προαιρετικό. Μπορεί να χρησιμοποιηθεί για να συμπεριλάβει πληροφορίες όπως CC και BCC.
- Το CC είναι το ακρωνύμιο για το carbon copy. Χρησιμοποιείται όταν θέλετε να στείλετε ένα αντίγραφο σε ένα ενδιαφερόμενο άτομο, δηλαδή ένα email παραπόνων που αποστέλλεται σε μια εταιρεία μπορεί επίσης να αποσταλεί ως CC στον πίνακα παραπόνων.
- Το BCC είναι το ακρωνύμιο για το blind carbon copy. Είναι παρόμοιο με το CC, αλλά οι διευθύνσεις ηλεκτρονικού ταχυδρομείου που περιλαμβάνονται στην ενότητα BCC δεν εμφανίζονται στους άλλους παραλήπτες.
Απλούς Mail Transmission Πρωτόκολλο (SMTP)
Το PHP mail χρησιμοποιεί το Simple Mail Transmission Πρωτόκολλο (SMTP) για την αποστολή αλληλογραφίας.
Σε έναν φιλοξενούμενο διακομιστή, οι ρυθμίσεις SMTP θα είχαν ήδη οριστεί.
Οι ρυθμίσεις αλληλογραφίας SMTP μπορούν να διαμορφωθούν από το αρχείο "php.ini" στον φάκελο εγκατάστασης της PHP.
Για να διαμορφώσετε τις ρυθμίσεις SMTP στον τοπικό σας κεντρικό υπολογιστή, υποθέτοντας ότι χρησιμοποιείτε XAMPP σε Windows, εντοπίστε το αρχείο "php.ini" στον κατάλογο "C:\xampp\php".
- Ανοίξτε το χρησιμοποιώντας το Σημειωματάριο ή οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου. Σε αυτό το παράδειγμα θα χρησιμοποιήσουμε το Σημειωματάριο. Κάντε κλικ στο μενού Επεξεργασία.
- Κάντε κλικ στο μενού Εύρεση…
- Θα εμφανιστεί το παράθυρο διαλόγου Εύρεση
- Κάντε κλικ στο κουμπί Εύρεση επόμενου
Εντοπίστε τις καταχωρήσεις στην ενότητα [mail function]. Οι προεπιλεγμένες γραμμές συνήθως μοιάζουν με αυτήν:
- ; SMTP = localhost
- ; smtp_port = 25
Αφαιρέστε τα ερωτηματικά πριν από τα SMTP και smtp_port και ορίστε το SMTP στο δικό σας SMTP server και τη θύρα στη θύρα SMTP. Οι ρυθμίσεις σας θα πρέπει να έχουν ως εξής:
- SMTP = smtp.example.com
- smtp_port = 25
Σημείωση: Οι ρυθμίσεις SMTP μπορούν να ληφθούν από τον πάροχο φιλοξενίας ιστοσελίδων σας. Εάν ο διακομιστής απαιτεί έλεγχο ταυτότητας, προσθέστε τις ακόλουθες γραμμές:
- auth_username = example_username@example.com
- auth_password = example_password
Αποθηκεύστε τις νέες αλλαγές και επανεκκινήστε το Apache διακομιστή.
PHP Mail Παράδειγμα
Ας δούμε τώρα ένα παράδειγμα που στέλνει ένα απλό email.
<?php $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; mail($to_email,$subject,$message,$headers); ?>
Παραγωγή:
Σημείωση: το παραπάνω παράδειγμα λαμβάνει μόνο τις 4 υποχρεωτικές παραμέτρους. Θα πρέπει να αντικαταστήσετε την παραπάνω φανταστική διεύθυνση ηλεκτρονικού ταχυδρομείου με μια πραγματική διεύθυνση ηλεκτρονικού ταχυδρομείου.
Απολύμανση των εισόδων των χρηστών email
Το παραπάνω παράδειγμα χρησιμοποιεί σκληρές κωδικοποιημένες τιμές στον πηγαίο κώδικα για τη διεύθυνση email και άλλες λεπτομέρειες για απλότητα.
Ας υποθέσουμε ότι πρέπει να δημιουργήσετε μια φόρμα επικοινωνίας όπου οι χρήστες συμπληρώνουν τα στοιχεία τους και στη συνέχεια υποβάλλουν την φόρμα.
- Οι χρήστες μπορούν να εισάγουν κώδικα στις κεφαλίδες κατά λάθος ή σκόπιμα, κάτι που μπορεί να οδηγήσει στην αποστολή ανεπιθύμητης αλληλογραφίας.
- Για να προστατεύσετε το σύστημά σας από τέτοιες επιθέσεις, μπορείτε να δημιουργήσετε μια προσαρμοσμένη συνάρτηση που απολυμαίνει και επικυρώνει τις τιμές πριν από την αποστολή της αλληλογραφίας.
Ας δημιουργήσουμε μια προσαρμοσμένη συνάρτηση που επικυρώνει και απολυμαίνει τη διεύθυνση email χρησιμοποιώντας την ενσωματωμένη συνάρτηση filter_var. Η συνάρτηση filter_var χρησιμοποιείται για την απολύμανση και την επικύρωση των δεδομένων εισόδου του χρήστη.
Έχει την εξής βασική σύνταξη.
<?php filter_var($field, SANITIZATION_TYPE); ?>
ΕΔΩ,
- Το "filter_var(…)" είναι η συνάρτηση επικύρωσης και απολύμανσης
- Το "$field" είναι η τιμή του πεδίου που θα φιλτράρετε.
- «ΤΥΠΟΣ_ΕΞΥΓΙΑΝΣΗΣ» είναι ο τύπος εξυγίανσης που θα εκτελεστεί στο πεδίο, όπως:
- FILTER_VALIDATE_EMAIL – επιστρέφει την τιμή true για έγκυρες διευθύνσεις email και false για μη έγκυρες διευθύνσεις email.
- FILTER_SANITIZE_EMAIL – αφαιρεί τους μη επιτρεπόμενους χαρακτήρες από τις διευθύνσεις email, επομένως μια διεύθυνση με αδέσποτους χαρακτήρες μειώνεται σε info@domain.com.
- ΦΙΛΤΡΟ_ΑΠΟΣΤΕΙΡΩΣΗ_URL – αφαιρεί μη επιτρεπόμενους χαρακτήρες από URLs, αφήνοντας μια καθαρή διεύθυνση όπως https://www.example.com.
- FILTER_SANITIZE_STRING – αφαιρεί τις ετικέτες από τις τιμές συμβολοσειρών, επομένως η μεταβλητή am bold γίνεται am bold. Σημειώστε ότι αυτό το φίλτρο έχει καταργηθεί στην PHP 8.1. Χρησιμοποιήστε αντ' αυτού την htmlspecialchars().
Ο παρακάτω κώδικας χρησιμοποιεί μια προσαρμοσμένη συνάρτηση για την ασφαλή αποστολή αλληλογραφίας.
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; // check if the email address is invalid $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { // send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
Παραγωγή:
προστασία Mail
Τα μηνύματα ηλεκτρονικού ταχυδρομείου μπορούν να υποκλαπούν κατά τη μετάδοση από ακούσιους παραλήπτες.
Αυτό μπορεί να εκθέσει το περιεχόμενο του email σε ανεπιθύμητους παραλήπτες.
Η ασφαλής αλληλογραφία λύνει αυτό το πρόβλημα transmitΑποστολή email μέσω κρυπτογραφημένης σύνδεσης χρησιμοποιώντας SSL ή TLS, για παράδειγμα SMTP μέσω SSL στη θύρα 465 ή STARTTLS στη θύρα 587.
Η κρυπτογράφηση μπερδεύει το μήνυμα πριν από την αποστολή του, επομένως μόνο ο διακομιστής αλληλογραφίας του παραλήπτη μπορεί να το διαβάσει.
PHPMailer: Μια καλύτερη εναλλακτική λύση για το mail()
Για πραγματικές εφαρμογές, οι περισσότεροι προγραμματιστές χρησιμοποιούν την PHP.Mailβιβλιοθήκη er αντί για τη συνάρτηση raw mail(). PHPMailΤο er ελέγχει την ταυτότητά του με έναν εξωτερικό διακομιστή SMTP, γεγονός που βελτιώνει σημαντικά την παράδοση και απλοποιεί τη διαδικασία δημιουργίας συνημμένων και email HTML.
Εγκαταστήστε το με το Composer και, στη συνέχεια, στείλτε email μέσω μιας κρυπτογραφημένης σύνδεσης SMTP με έλεγχο ταυτότητας, όπως φαίνεται παρακάτω.
<?php use PHPMailer\PHPMailer\PHPMailer; require 'vendor/autoload.php'; $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@example.com', 'My App'); $mail->addAddress('name@example.com'); $mail->Subject = 'Testing PHPMailer'; $mail->Body = 'This email is sent using PHPMailer over SMTP'; $mail->send(); ?>
Σε σύγκριση με το mail(), PHPMailΤο er σας παρέχει έλεγχο ταυτότητας SMTP, ενσωματωμένη κρυπτογράφηση, υποστήριξη συνημμένων και σαφέστερο χειρισμό σφαλμάτων, γι' αυτό και αποτελεί την προτεινόμενη επιλογή για email παραγωγής.






