Kako poslati e-poštu pomoću Codeupaljač
⚡ Pametni sažetak
CodeIgniter Sending Email oslanja se na ugrađenu biblioteku e-pošte okvira za dostavu poruka putem SMTP-a ili lokalnog poslužitelja pošte. Ovaj primjer stvara konfiguracijsku datoteku e-pošte, prikaz kontaktnog obrasca i kontroler koji čita unos obrasca i šalje poruku.

E-pošta je vrlo važna u web aplikacijama. Kada se korisnik prijavi, možda ćemo mu htjeti poslati e-poštu kako bismo potvrdili njegovu adresu e-pošte i omogućili mu da potvrdi pretplatu. Također koristimo e-poštu za resetiranje zaboravljenih lozinki i slanje računa i potvrda kupcima. CodeIgniter nam iznimno olakšava slanje e-pošte iz naše aplikacije koristeći razne opcije.
CodeIgniter ima ugrađenu biblioteku e-pošte s kojom možemo raditi prilikom slanja e-pošte.
CodeKonfiguracija e-pošte zapaljivača
Moramo imati centralno mjesto gdje možemo upravljati postavkama e-pošte. CodeIgniter ne dolazi s konfiguracijskom datotekom za e-poštu, pa ćemo je morati sami kreirati.
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' određuje protokol koji želite koristiti prilikom slanja e-pošte. To može biti Gmail SMTP postavke ili SMTP postavke vašeg hosta
- 'smtp_host' => 'smtp.example.com' određuje SMTP host. Na primjer, ako želite koristiti Gmail onda 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 navedenu SMTP korisničku e-poštu
- 'smtp_crypto' => 'ssl', određuje metodu šifriranja koja će se koristiti, npr. ssl, tls itd.
- 'mailtype' => '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.
- 'prelom riječi' => TRUE, ako je postavljeno na TRUE, prelom riječi je omogućen. Ako je postavljeno na FALSE, prelom 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.
CodePrikaz e-pošte za upaljač
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 u 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(0)?>" 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 ruti e-pošte.
CodeKontroler e-pošte zapaljivača
Sada kreirajmo kontroler koji će obrađivati slanje 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 roditelja CodeKontroler paljenja.
- 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 naslov 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, prikazuje se poruka „Vaša e-pošta je uspješno poslana“, inače se ispisuju informacije o otklanjanju pogrešaka o tome što je možda pošlo po zlu.
Sada definirajmo 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 kontaktni obrazac u web pregledniku.
Pokrenimo ugrađeni PHP poslužitelj.
Otvorite terminal ili naredbeni redak i idite do korijenske mape vaše aplikacije. U mom slučaju, korijenska mapa se nalazi na 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će URL u vašem web pregledniku: 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 Pošalji e-poštu. Ako je konfiguracija e-pošte ispravno postavljena, trebali biste vidjeti poruku o uspjehu.
Kako slati HTML e-poruke i priloge u Codeupaljač
Ista biblioteka e-pošte može slati bogato formatirane poruke i datoteke. Dvije male promjene pretvaraju gornji primjer običnog teksta u HTML e-poštu s privitkom.
$this->email->set_mailtype('html'); $this->email->message('<h3>Welcome</h3><p>Thanks for joining us.</p>'); $this->email->attach('/path/to/report.pdf');
- set_mailtype('html'): govori biblioteci da tijelo sadrži HTML, pa se oznake poput naslova i poveznica prikazuju u pristigloj pošti primatelja.
- priloži(): dodaje datoteku s putanje poslužitelja u poruku; pozovite je jednom za svaku datoteku prije send().
Imajte na umu da HTML e-poruke i dalje trebaju sadržavati alternativu običnog teksta, a velike privitke mogu odbaciti strogi poslužitelji pošte.

