Πώς να στείλετε email χρησιμοποιώντας τη συνάρτηση PHP mail().

⚡ Έξυπνη Σύνοψη

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

  • 📧 Τι κάνει η mail(): Η συνάρτηση mail() στέλνει ένα email από ένα σενάριο, λαμβάνοντας τον παραλήπτη, το θέμα, το μήνυμα και προαιρετικές κεφαλίδες.
  • 📨 Μεταφορά SMTP: Το PHP email βασίζεται στο SMTP, του οποίου ο κεντρικός υπολογιστής, η θύρα και ο έλεγχος ταυτότητας ορίζονται στο αρχείο ρυθμίσεων php.ini.
  • 📋 CC και BCC: Οι προαιρετικές κεφαλίδες προσθέτουν αντίγραφο με καρμπόν και τυφλούς παραλήπτες αντιγράφων με καρμπόν, με την κρυφή κοινοποίηση να αποκρύπτεται από τους άλλους παραλήπτες.
  • ️ Απολύμανση εισόδου: Η συνάρτηση filter_var με FILTER_SANITIZE_EMAIL και FILTER_VALIDATE_EMAIL αποκλείει την εισαγωγή κεφαλίδας από την εισαγωγή φόρμας επικοινωνίας.
  • 🔒 προστασία Mail: Η κρυπτογράφηση της σύνδεσης με SSL ή TLS προστατεύει το περιεχόμενο του μηνύματος από την ανάγνωση κατά τη μεταφορά.
  • 🧰 Χρήση PHPMailer: PHPMailΤο er προσθέτει έλεγχο ταυτότητας SMTP, συνημμένα και email HTML, καθιστώντας το πιο αξιόπιστο από το raw mail().
  • 🤖 AI Assist: Τα εργαλεία τεχνητής νοημοσύνης μπορούν να διαμορφώσουν την PHPMailμε το SMTP και προτείνετε διορθώσεις που κρατούν τα email σας μακριά από τον φάκελο ανεπιθύμητης αλληλογραφίας.

PHP Mail

Τι είναι το PHP mail;

Το PHP mail είναι η ενσωματωμένη συνάρτηση PHP που χρησιμοποιείται για την αποστολή email από PHP scripts.

Η συνάρτηση αλληλογραφίας δέχεται τις ακόλουθες παραμέτρους:

  • Email
  • Θέμα
  • Το μήνυμά σας
  • Διευθύνσεις ηλεκτρονικού ταχυδρομείου 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 Transmission Πρωτόκολλο

  • Κάντε κλικ στο μενού Εύρεση…

Απλούς Mail Transmission Πρωτόκολλο

  • Θα εμφανιστεί το παράθυρο διαλόγου Εύρεση

Απλούς Mail Transmission Πρωτόκολλο

  • Κάντε κλικ στο κουμπί Εύρεση επόμενου

Απλούς Mail Transmission Πρωτόκολλο

Εντοπίστε τις καταχωρήσεις στην ενότητα [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);
?>

Παραγωγή:

Απλούς Mail Transmission Πρωτόκολλο

Σημείωση: το παραπάνω παράδειγμα λαμβάνει μόνο τις 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";
}
?>

Παραγωγή:

Απολύμανση των εισόδων των χρηστών email

προστασία 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 παραγωγής.

Συχνές Ερωτήσεις

Η πιο συνηθισμένη αιτία είναι η μη διαμόρφωση διακομιστή αλληλογραφίας στον τοπικό κεντρικό υπολογιστή. Ορίστε τις σωστές τιμές SMTP στο php.ini ή χρησιμοποιήστε PHP.Mailμε έναν εξουσιοδοτημένο λογαριασμό SMTP. Ελέγξτε επίσης το αρχείο καταγραφής σφαλμάτων διακομιστή και τον φάκελο ανεπιθύμητης αλληλογραφίας.

Προσθέστε κεφαλίδες που ορίζουν την έκδοση MIME σε 1.0 και τον τύπο περιεχομένου σε κείμενο/html και, στη συνέχεια, τοποθετήστε σήμανση HTML στο σώμα του μηνύματος. PHPMailΤο er χειρίζεται αυτό αυτόματα όταν ορίσετε την επιλογή isHTML(true).

Η συνάρτηση FILTER_SANITIZE_STRING έχει καταργηθεί από την έκδοση PHP 8.1. Χρησιμοποιήστε την htmlspecialchars() για να διαφύγετε από την έξοδο για εμφάνιση ή έναν συγκεκριμένο επικυρωτή όπως το FILTER_VALIDATE_EMAIL, ανάλογα με το αν καθαρίζετε ή ελέγχετε την τιμή.

Ναι. Δώστε στο AI τον κεντρικό υπολογιστή SMTP, τη θύρα και τον τύπο ασφαλείας σας και μπορεί να δημιουργήσει το πλήρες PHP.MailΡύθμιση er με έλεγχο ταυτότητας, αποστολέα, παραλήπτες και χειρισμό σφαλμάτων. Αποθηκεύστε τα διαπιστευτήρια σε μεταβλητές περιβάλλοντος, όχι σε κώδικα.

Ναι. Η Τεχνητή Νοημοσύνη μπορεί να σας συμβουλεύσει σχετικά με τα αρχεία SPF, DKIM και DMARC, χρησιμοποιώντας έναν πιστοποιημένο αποστολέα SMTP, αποφεύγοντας λέξεις ενεργοποίησης ανεπιθύμητης αλληλογραφίας και ορίζοντας μια έγκυρη διεύθυνση Από, και στη συνέχεια να σας βοηθήσει να δοκιμάσετε την παράδοση.

Συνοψίστε αυτήν την ανάρτηση με: