Kako poslati e-poštu pomoću CodeIgnitera
E-pošta je vrlo važna u web aplikacijama. Kada se korisnik prijavi, možda ćemo mu htjeti poslati e-poštu da potvrdimo njegovu adresu e-pošte i omogućimo korisniku da potvrdi pretplatu. Također koristimo e-poštu za poništavanje zaboravljenih lozinki, slanje faktura i potvrda kupcima itd. CodeIgniter nam izuzetno olakšava slanje e-pošte iz naše aplikacije pomoću raznih opcija.
CodeIgniter ima ugrađenu biblioteku e-pošte s kojom možemo raditi prilikom slanja e-pošte.
CodeIgniter konfiguracija e-pošte
Moramo imati središnje mjesto gdje možemo upravljati postavkama e-pošte. CodeIgniter ne dolazi s konfiguracijskom datotekom za e-poštu pa ćemo je morati sami izraditi.
Napravite datoteku email.php u direktoriju application/config
Dodajte sljedeći kod u 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 );
OVDJE,
- 'protocol' => 'smtp', specificira protokol koji želite koristiti prilikom slanja e-pošte. To mogu biti SMTP postavke za Gmail ili SMTP postavke vašeg hosta
- 'smtp_host' => 'smtp.example.com', navodi smtp host. Na primjer, ako želite koristiti Gmail tada biste imali nešto poput smtp.gmail.com
- 'smtp_port' => 465, otvoreni port na navedenom smtp hostu koji je konfiguriran za smtp poštu
- 'smtp_user' => 'no-reply@example.com', adresa e-pošte koja će se koristiti kao pošiljatelj prilikom slanja e-pošte. Ovo bi trebala biti važeća adresa e-pošte koja postoji na poslužitelju
- 'smtp_pass' => '12345!', lozinka za navedeni smtp korisnički email
- 'smtp_crypto' => 'ssl', navodi metodu šifriranja koja će se koristiti, npr. ssl, tls itd.
- 'email type' => 'text', postavlja vrstu pošte koja će se koristiti. To može biti običan tekst ili HTML, ovisno o vašim potrebama.
- 'smtp_timeout' => '4', specificira vrijeme u sekundama koje bi trebalo proteći prilikom pokušaja spajanja na glavno računalo prije nego što se izbaci iznimka vremenskog ograničenja.
- 'charset' => 'iso-8859-1', definira skup znakova koji će se koristiti prilikom slanja e-pošte.
- 'wordwrap' => TRUE je postavljeno na TRUE tada je omogućeno prelamanje riječi. Ako je postavljeno na FALSE, prijelom riječi nije omogućen
bilješke: za slanje e-pošte na posao, trebali biste dati valjane konfiguracijske parametre. Dummy parametri neće moći slati e-poštu.
Prikaz e-pošte CodeIgniter
U ovom odjeljku izradit ćemo prikaz koji će poslati e-poštu primatelju.
Stvorite novi imenik e-pošte u aplikaciji/prikazima
Napravite novu datoteku contact.php application/views/email
Dodajte sljedeći kod u 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>
OVDJE,
- Imamo osnovni HTML obrazac koji prihvaća e-poštu, predmet i poruku, a zatim prosljeđuje parametre na rutu e-pošte.
Kontroler e-pošte CodeIgniter
Kreirajmo sada kontroler koji će upravljati slanjem e-pošte
Napravite novu datoteku EmailController.php u application/controllers/EmailController.php
Dodajte sljedeći kod u 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()); } } }
OVDJE,
- class EmailController extends CI_Controller {…} definira naš kontroler e-pošte koji proširuje nadređeni CodeIgniter kontroler.
- javna funkcija __construct() {…} definira podređeni konstruktor koji poziva roditeljsku metodu konstruktora.
- javna funkcija index() {…} definira metodu indeksiranja koja prikazuje obrazac za kontakt
- funkcija send() {…} definira metodu koja šalje e-poštu
- $this->load->config('email'); učitava postavke konfiguracije e-pošte
- $this->load->library('email'); učitava biblioteku e-pošte
- $from = $this->config->item('smtp_user'); dobiva ID pošiljatelja iz konfiguracijske datoteke e-pošte koju smo definirali.
- $to = $this->input->post('to'); dobiva vrijednost do iz poslanog obrasca
- $subject = $this->input->post('subject'); postavlja predmet e-pošte iz obrasca
- $message = $this->input->post('message'); postavlja poruku e-pošte iz obrasca
- $this->email->set_newline(“\r\n”); definira znakove novog retka za e-poštu
- $this->e-mail->from($from); postavlja adresu e-pošte pošiljatelja
- $this->e-mail->to($to); postavlja adresu e-pošte primatelja
- $this->e-mail->subject($subject); postavlja predmet e-pošte
- $this->e-mail->message($message); postavlja poruku e-pošte
- ako ($this->email->send()) {…} pokuša poslati e-poštu. Ako je e-pošta uspješno poslana, poruka Vaša e-pošta je uspješno poslana inače se ispisuje informacija o otklanjanju pogrešaka na onome što je možda pošlo po zlu.
Definirajmo sada rute e-pošte
Rute e-pošte
Dodajte sljedeće rute u application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Sada možemo učitati obrazac za kontakte u web pregledniku
Pokrenimo ugrađeni PHP poslužitelj
Otvorite terminal/naredbeni redak i potražite korijen svoje aplikacije. U mom slučaju, root se nalazi u disku C:\Sites\ci-app
cd C:\Sites\ci-app
pokrenite poslužitelj pomoću sljedeće naredbe
php -S localhost:3000
Učitajte sljedeći URL u svoj web preglednik: http://localhost:3000/send-email
Trebali biste moći vidjeti sljedeći obrazac
Unesite e-poštu primatelja, predmet i poruku e-pošte, a zatim kliknite na Pošalji e-poštu. Ako su vaše konfiguracije e-pošte ispravno postavljene, trebali biste moći vidjeti uspješnu poruku.
rezime
Ugrađena biblioteka e-pošte olakšava nam slanje e-pošte s minimalnim kodom. Knjižnica je također vrlo fleksibilna u smislu da je možete konfigurirati kako bi zadovoljila vaše zahtjeve.