Hogyan küldjünk e-mailt a CodeIgniter segítségével
Az e-mail nagyon fontos a webes alkalmazásokban. Amikor egy felhasználó regisztrál, érdemes lehet e-mailt küldeni neki, hogy igazolja e-mail címét, és lehetővé tegye a felhasználó számára az előfizetés megerősítését. Ezenkívül e-mailt használunk az elfelejtett jelszavak visszaállítására, számlák és nyugták küldésére az ügyfeleknek stb. A CodeIgniter segítségével rendkívül egyszerűen küldhetünk e-maileket az alkalmazásunkból, különféle lehetőségek használatával.
A CodeIgniter beépített e-mail könyvtárral rendelkezik, amellyel e-mailek küldésekor tudunk dolgozni.
CodeIgniter e-mail konfiguráció
Szükségünk van egy központi helyre, ahol kezelhetjük az e-mail beállításokat. A CodeIgniter nem tartalmaz konfigurációs fájlt az e-mailekhez, így magunknak kell létrehoznunk egyet.
Hozzon létre egy email.php fájlt az application/config könyvtárban
Adja hozzá a következő kódot az email.php-hez
<?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 );
ITT,
- 'protocol' => 'smtp', megadja az e-mail küldésekor használni kívánt protokollt. Ez lehet a Gmail smtp beállítása vagy a gazdagép smtp beállítása
- 'smtp_host' => 'smtp.example.com', az smtp gazdagépet adja meg. Például, ha a Gmailt szeretné használni, akkor valami olyan, mint az smtp.gmail.com
- 'smtp_port' => 465, egy nyitott port a megadott smtp gazdagépen, amely smtp levelekhez van konfigurálva
- 'smtp_user' => 'no-reply@example.com', az az e-mail cím, amelyet a rendszer feladóként fog használni az e-mailek küldésekor. Ennek egy érvényes e-mail címnek kell lennie, amely létezik a szerveren
- 'smtp_pass' => '12345!', a megadott smtp felhasználói e-mail-címhez tartozó jelszó
- 'smtp_crypto' => 'ssl', megadja a használandó titkosítási módszert, pl. ssl, tls stb.
- 'email type' => 'text', beállítja a használandó levéltípust. Ez lehet egyszerű szöveg vagy HTML, az Ön igényeitől függően.
- 'smtp_timeout' => '4', megadja azt az időt másodpercben, aminek el kell telnie, amikor megpróbál csatlakozni a gazdagéphez, mielőtt az időtúllépési kivétel megjelenne.
- 'charset' => 'iso-8859-1', meghatározza az e-mailek küldésekor használandó karakterkészletet.
- 'wordwrap' => TRUE értéke IGAZ, majd a szótörlés engedélyezve van. Ha FALSE-ra van állítva, akkor a tördelés nincs engedélyezve
Megjegyzések: az e-mailek munkához való küldéséhez érvényes konfigurációs paramétereket kell megadnia. Az álparaméterek nem tudnak e-mailt küldeni.
CodeIgniter e-mail nézet
Ebben a részben létrehozzuk azt a nézetet, amely elküldi az e-mailt a címzettnek.
Hozzon létre egy új címtár e-mailt az alkalmazásban/nézetekben
Hozzon létre egy új fájlt contact.php application/views/email
Adja hozzá a következő kódot az application/views/email/contact.php fájlhoz
<!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>
ITT,
- Van egy alap HTML űrlapunk, amely elfogadja az e-mailt, a tárgyat és az üzenetet, majd átadja a paramétereket az e-mail útvonalnak.
CodeIgniter e-mail vezérlő
Most hozzuk létre azt a vezérlőt, amely az e-mailek küldését fogja kezelni
Hozzon létre egy új EmailController.php fájlt az application/controllers/EmailController.php fájlban
Adja hozzá a következő kódot az EmailController.php webhelyhez
<?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()); } } }
ITT,
- osztály EmailController kiterjeszti A CI_Controller {…} meghatározza az e-mail vezérlőnket, amely kiterjeszti a szülő CodeIgniter vezérlőt.
- public függvény __construct() {…} határozza meg a szülő konstruktor metódust meghívó gyermek konstruktort.
- public function index() {…} a kapcsolatfelvételi űrlapot megjelenítő indexmódszert határozza meg
- A send() {…} függvény határozza meg az e-mail elküldésének módját
- $this->load->config('email'); betölti az e-mail konfigurációs beállításokat
- $this->load->library('email'); betölti az e-mail könyvtárat
- $from = $this->config->item('smtp_user'); lekéri a feladó azonosítóját az általunk meghatározott e-mail konfigurációs fájlból.
- $hoz = $this->input->post('to'); lekéri a to értéket a beküldött űrlapról
- $tárgy = $this->input->post('tárgy'); beállítja az űrlapon szereplő e-mailt
- $üzenet = $this->input->post('üzenet'); beállítja az e-mail üzenetet az űrlapról
- $this->email->set_newline(“\r\n”); meghatározza az e-mailek új sorkaraktereit
- $ez->e-mail->feladó($feladó); beállítja a feladó e-mail címét
- $this->email->to($to); beállítja a címzett e-mail címét
- $ez->e-mail->tárgy($tárgy); beállítja az e-mail tárgyát
- $ez->e-mail->üzenet($üzenet); beállítja az e-mail üzenetet
- ha ($this->email->send()) {…} megpróbálja elküldeni az e-mailt. Ha az e-mailt sikeresen elküldtük, akkor az Ön e-mailje sikeresen el lett küldve üzenet, különben hibakeresési információ kerül kinyomtatásra a hiba miatt.
Most határozzuk meg az e-mail útvonalakat
E-mail útvonalak
Adja hozzá a következő útvonalakat az application/config/routes.php fájlhoz
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Most már betölthetjük a kapcsolatfelvételi űrlapot a webböngészőbe
Indítsuk el a beépített PHP szervert
Nyissa meg a terminált/parancssort, és tallózással keresse meg az alkalmazás gyökerét. Az én esetemben a gyökér a C:\Sites\ci-app meghajtón található
cd C:\Sites\ci-app
indítsa el a szervert a következő paranccsal
php -S localhost:3000
Töltse be a következő URL-t a böngészőjébe: http://localhost:3000/send-email
Látnia kell a következő űrlapot
Írja be a címzett e-mail címét, tárgyát és e-mail üzenetét, majd kattintson az E-mail küldése gombra. Ha az e-mail konfigurációk megfelelően vannak beállítva, akkor látnia kell a sikeres üzenetet.
Összegzésként
A beépített e-mail könyvtár megkönnyíti számunkra, hogy minimális kóddal küldjünk e-maileket. A könyvtár abban az értelemben is nagyon rugalmas, hogy az igényeinek megfelelően beállíthatja.