Πώς να στείλετε email χρησιμοποιώντας το CodeIgniter
Το email είναι πολύ σημαντικό στις διαδικτυακές εφαρμογές. Όταν ένας χρήστης εγγράφεται, ίσως θέλουμε να του στείλουμε ένα email για να επαληθεύσουμε τη διεύθυνση email του και να επιτρέψουμε στον χρήστη να επιβεβαιώσει τη συνδρομή του. Χρησιμοποιούμε επίσης email για την επαναφορά των ξεχασμένων κωδικών πρόσβασης, την αποστολή τιμολογίων και αποδείξεων σε πελάτες κ.λπ. Το CodeIgniter μας διευκολύνει να στέλνουμε email από την εφαρμογή μας χρησιμοποιώντας μια ποικιλία επιλογών.
Το CodeIgniter διαθέτει μια ενσωματωμένη βιβλιοθήκη email με την οποία μπορούμε να συνεργαστούμε κατά την αποστολή email.
Διαμόρφωση email CodeIgniter
Πρέπει να έχουμε ένα κεντρικό μέρος όπου μπορούμε να διαχειριζόμαστε τις ρυθμίσεις email. Το CodeIgniter δεν συνοδεύεται από αρχείο διαμόρφωσης για email, επομένως θα πρέπει να δημιουργήσουμε ένα μόνοι μας.
Δημιουργήστε ένα αρχείο email.php στην εφαρμογή/config καταλόγου
Προσθέστε τον παρακάτω κώδικα στο email.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); $config = array( 'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp' 'smtp_host' => 'smtp.example.com', 'smtp_port' => 465, 'smtp_user' => 'no-reply@example.com', 'smtp_pass' => '12345!', 'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example 'mailtype' => 'text', //plaintext 'text' mails or 'html' 'smtp_timeout' => '4', //in seconds 'charset' => 'iso-8859-1', 'wordwrap' => TRUE );
ΕΔΩ,
- 'protocol' => 'smtp', καθορίζει το πρωτόκολλο που θέλετε να χρησιμοποιήσετε κατά την αποστολή email. Αυτό μπορεί να είναι ρυθμίσεις smtp του Gmail ή ρυθμίσεις smtp από τον κεντρικό υπολογιστή σας
- 'smtp_host' => 'smtp.example.com',καθορίζει τον κεντρικό υπολογιστή smtp. Για παράδειγμα, εάν θέλετε να χρησιμοποιήσετε το Gmail, τότε θα έχετε κάτι σαν το smtp.gmail.com
- 'smtp_port' => 465, μια ανοιχτή θύρα στον καθορισμένο κεντρικό υπολογιστή smtp που έχει ρυθμιστεί για αλληλογραφία smtp
- 'smtp_user' => 'no-reply@example.com', η διεύθυνση email που θα χρησιμοποιηθεί ως αποστολέας κατά την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου. Αυτή θα πρέπει να είναι μια έγκυρη διεύθυνση email που υπάρχει στον διακομιστή
- 'smtp_pass' => '12345!', ο κωδικός πρόσβασης στο καθορισμένο email χρήστη smtp
- 'smtp_crypto' => 'ssl', καθορίζει τη μέθοδο κρυπτογράφησης που θα χρησιμοποιηθεί π.χ. ssl, tls κ.λπ.
- 'τύπος email' => 'κείμενο', ορίζει τον τύπο αλληλογραφίας που θα χρησιμοποιηθεί. Αυτό μπορεί να είναι είτε απλό κείμενο είτε HTML ανάλογα με τις ανάγκες σας.
- 'smtp_timeout' => '4', καθορίζει το χρόνο σε δευτερόλεπτα που πρέπει να μεσολαβήσει κατά την προσπάθεια σύνδεσης με τον κεντρικό υπολογιστή πριν από τη δημιουργία εξαίρεσης χρονικού ορίου.
- 'charset' => 'iso-8859-1', ορίζει το σύνολο χαρακτήρων που θα χρησιμοποιείται κατά την αποστολή email.
- Το 'wordwrap' => TRUE ορίζεται σε TRUE και στη συνέχεια το word-wrap είναι ενεργοποιημένο. Εάν έχει οριστεί σε FALSE, τότε το word-wrap δεν είναι ενεργοποιημένο
Σημείωση: για την αποστολή email στην εργασία, θα πρέπει να παρέχετε έγκυρες παραμέτρους διαμόρφωσης. Οι εικονικές παράμετροι δεν θα μπορούν να στείλουν μηνύματα ηλεκτρονικού ταχυδρομείου.
Προβολή email CodeIgniter
Σε αυτήν την ενότητα, θα δημιουργήσουμε την προβολή που θα στείλει το email στον παραλήπτη.
Δημιουργήστε ένα νέο email καταλόγου σε εφαρμογή/προβολές
Δημιουργήστε ένα νέο αρχείο contact.php application/views/email
Προσθέστε τον ακόλουθο κώδικα στο application/views/email/contact.php
<!DOCTYPE html> <html> <head> <title>CodeIgniter Send Email</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <h3>Use the form below to send email</h3> <form method="post" action="<?=base_url('email')?>" enctype="multipart/form-data"> <input type="email" id="to" name="to" placeholder="Receiver Email"> <br><br> <input type="text" id="subject" name="subject" placeholder="Subject"> <br><br> <textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea> <br><br> <input type="submit" value="Send Email" /> </form> </div> </body> </html>
ΕΔΩ,
- Έχουμε μια βασική φόρμα HTML που δέχεται το email, το θέμα και το μήνυμα και στη συνέχεια μεταβιβάζει τις παραμέτρους στη διαδρομή email.
Ελεγκτής email CodeIgniter
Ας δημιουργήσουμε τώρα τον ελεγκτή που θα χειρίζεται την αποστολή email
Δημιουργήστε ένα νέο αρχείο EmailController.php στο application/controllers/EmailController.php
Προσθέστε τον ακόλουθο κώδικα στο EmailController.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class EmailController extends CI_Controller { public function __construct() { parent:: __construct(); $this->load->helper('url'); } public function index() { $this->load->view('email/contact'); } function send() { $this->load->config('email'); $this->load->library('email'); $from = $this->config->item('smtp_user'); $to = $this->input->post('to'); $subject = $this->input->post('subject'); $message = $this->input->post('message'); $this->email->set_newline("\r\n"); $this->email->from($from); $this->email->to($to); $this->email->subject($subject); $this->email->message($message); if ($this->email->send()) { echo 'Your Email has successfully been sent.'; } else { show_error($this->email->print_debugger()); } } }
ΕΔΩ,
- class EmailController extends CI_Controller {…} ορίζει τον ελεγκτή email μας που επεκτείνει τον γονικό ελεγκτή CodeIgniter.
- Η δημόσια συνάρτηση __construct() {…} ορίζει τον θυγατρικό κατασκευαστή που καλεί τη γονική μέθοδο κατασκευής.
- δημόσια συνάρτηση index() {…} ορίζει τη μέθοδο ευρετηρίου που εμφανίζει τη φόρμα επικοινωνίας
- Η συνάρτηση send() {…} ορίζει τη μέθοδο που στέλνει το email
- $this->load->config('email'); φορτώνει τις ρυθμίσεις διαμόρφωσης email
- $this->load->library('email'); φορτώνει τη βιβλιοθήκη email
- $from = $this->config->item('smtp_user'); παίρνει το αναγνωριστικό αποστολέα από το αρχείο διαμόρφωσης email που ορίσαμε.
- $to = $this->input->post('to'); παίρνει την τιμή to από την υποβληθείσα φόρμα
- $subject = $this->input->post('subject'); ορίζει το email που υποβάλλεται από τη φόρμα
- $message = $this->input->post('message'); ορίζει το μήνυμα email από τη φόρμα
- $this->email->set_newline(“\r\n”); ορίζει τους νέους χαρακτήρες γραμμής για τα email
- $this->email->from($from); ορίζει τη διεύθυνση email του αποστολέα
- $this->email->to($to); ορίζει τη διεύθυνση email του παραλήπτη
- $this->email->subject($subject); ορίζει το θέμα του email
- $this->email->message($message); ορίζει το μήνυμα email
- εάν ($this->email->send()) {…} επιχειρήσει να στείλει το email. Εάν το μήνυμα ηλεκτρονικού ταχυδρομείου σταλεί με επιτυχία, τότε το μήνυμα Το email σας έχει σταλεί επιτυχώς διαφορετικά οι πληροφορίες εντοπισμού σφαλμάτων εκτυπώνονται σε αυτό που μπορεί να έχει πάει στραβά.
Ας ορίσουμε τώρα τις διαδρομές email
Διαδρομές email
Προσθέστε τις ακόλουθες διαδρομές στο application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Μπορούμε τώρα να φορτώσουμε τη φόρμα επαφών στο πρόγραμμα περιήγησης ιστού
Ας ξεκινήσουμε τον ενσωματωμένο διακομιστή PHP
Ανοίξτε το τερματικό/γραμμή εντολών και περιηγηθείτε στη ρίζα της εφαρμογής σας. Στην περίπτωσή μου, η ρίζα βρίσκεται στη μονάδα δίσκου C:\Sites\ci-app
cd C:\Sites\ci-app
ξεκινήστε τον διακομιστή χρησιμοποιώντας την ακόλουθη εντολή
php -S localhost:3000
Φορτώστε την ακόλουθη διεύθυνση URL στο πρόγραμμα περιήγησής σας: http://localhost:3000/send-email
Θα πρέπει να μπορείτε να δείτε την παρακάτω φόρμα
Εισαγάγετε το email του παραλήπτη, το θέμα και το μήνυμα email και, στη συνέχεια, κάντε κλικ στο Send Email. Εάν οι διαμορφώσεις email σας έχουν ρυθμιστεί σωστά, τότε θα μπορείτε να δείτε το επιτυχές μήνυμα.
Σύνοψη
Η ενσωματωμένη βιβλιοθήκη email μας διευκολύνει να στέλνουμε email με ελάχιστο κώδικα. Η βιβλιοθήκη είναι επίσης πολύ ευέλικτη με την έννοια ότι μπορείτε να τη διαμορφώσετε ώστε να ανταποκρίνεται στις απαιτήσεις σας.