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

E-mail útvonalak

Í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.