Kuinka lähettää sähköpostia CodeIgniterin avulla

Sähköposti on erittäin tärkeä verkkosovelluksissa. Kun käyttäjä kirjautuu, saatamme haluta lähettää hänelle sähköpostin vahvistaaksemme sähköpostiosoitteensa ja antaaksemme käyttäjän vahvistaa tilauksensa. Käytämme myös sähköpostia unohtuneiden salasanojen nollaukseen, laskujen ja kuittien lähettämiseen asiakkaille jne. CodeIgniter tekee sähköpostien lähettämisestä sovelluksestamme erittäin helppoa useilla eri vaihtoehdoilla.

CodeIgniterissä on sisäänrakennettu sähköpostikirjasto, jonka kanssa voimme työskennellä sähköpostien lähettämisessä.

CodeIgniter-sähköpostiasetukset

Meillä on oltava keskitetty paikka, jossa voimme hallita sähköpostiasetuksia. CodeIgniterin mukana ei tule sähköpostien konfigurointitiedostoa, joten meidän on luotava sellainen itse.

Luo tiedosto email.php hakemistoon application/config

Lisää seuraava koodi osoitteeseen 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
);

TÄSSÄ,

  • 'protocol' => 'smtp', määrittää protokollan, jota haluat käyttää sähköpostin lähettämiseen. Nämä voivat olla Gmailin smtp-asetuksia tai isäntäsi smtp-asetuksia
  • 'smtp_host' => 'smtp.example.com',määrittää smtp-isännän. Jos esimerkiksi haluat käyttää Gmailia, sinulla on esimerkiksi smtp.gmail.com
  • 'smtp_port' => 465, määritetyn smtp-isännän avoin portti, joka on määritetty smtp-postia varten
  • 'smtp_user' => 'no-reply@example.com', sähköpostiosoite, jota käytetään lähettäjänä sähköposteja lähetettäessä. Tämän pitäisi olla kelvollinen sähköpostiosoite, joka on olemassa palvelimella
  • 'smtp_pass' => '12345!', salasana määritettyyn smtp-käyttäjäsähköpostiin
  • 'smtp_crypto' => 'ssl', määrittää käytettävän salaustavan eli ssl, tls jne.
  • 'email type' => 'text', määrittää käytettävän sähköpostityypin. Tämä voi olla joko pelkkää tekstiä tai HTML-muotoa tarpeidesi mukaan.
  • 'smtp_timeout' => '4', määrittää ajan sekunteina, jonka pitäisi kulua yritettäessä muodostaa yhteys isäntään ennen kuin aikakatkaisupoikkeus heitetään.
  • 'charset' => 'iso-8859-1', määrittää sähköpostien lähettämisessä käytettävän merkistön.
  • 'wordwrap' => TRUE on asetettu arvoon TOSI, sitten rivitys on käytössä. Jos se on FALSE, rivitys ei ole käytössä

Huomautuksia: sähköpostien lähettämistä varten sinun tulee antaa kelvolliset määritysparametrit. Valeparametrit eivät voi lähettää sähköposteja.

CodeIgniter sähköpostinäkymä

Tässä osiossa luomme näkymän, joka lähettää sähköpostin vastaanottajalle.

Luo uusi hakemistosähköposti sovelluksessa/näkymissä

Luo uusi tiedosto contact.php application/views/email

Lisää seuraava koodi osoitteeseen 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>

TÄSSÄ,

  • Meillä on HTML-peruslomake, joka hyväksyy sähköpostin, aiheen ja viestin ja välittää sitten parametrit sähköpostin reitille.

CodeIgniter sähköpostiohjain

Luodaan nyt ohjain, joka käsittelee sähköpostin lähettämisen

Luo uusi tiedosto EmailController.php hakemistoon application/controllers/EmailController.php

Lisää seuraava koodi osoitteeseen 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());
        }
    }
}

TÄSSÄ,

  • luokka EmailController laajentaa CI_Controller {…} määrittää sähköpostiohjaimemme, joka laajentaa CodeIgniter-yleisohjaimen.
  • julkinen funktio __construct() {…} määrittää alikonstruktorin, joka kutsuu ylätason konstruktorimetodia.
  • public function index() {…} määrittää indeksimenetelmän, joka näyttää yhteydenottolomakkeen
  • funktio send() {…} määrittää menetelmän, jolla sähköposti lähetetään
    • $this->load->config('sähköposti'); lataa sähköpostin määritysasetukset
    • $this->load->library('sähköposti'); lataa sähköpostikirjaston
    • $from = $this->config->item('smtp_user'); saa lähettäjän tunnuksen määrittämästämme sähköpostin määritystiedostosta.
    • $to = $this->input->post('to'); saa arvon lähetetystä lomakkeesta
    • $aihe = $this->input->post('aihe'); asettaa lomakkeen kohteena olevan sähköpostin
    • $viesti = $this->input->post('viesti'); asettaa sähköpostiviestin lomakkeesta
    • $this->email->set_newline("\r\n"); määrittää sähköpostien uudet rivimerkit
    • $this->mail->from($from); asettaa lähettäjän sähköpostiosoitteen
    • $tämä->sähköposti->vastaanottaja($vastaanottaja); asettaa vastaanottajan sähköpostiosoitteen
    • $this->sähköposti->aihe($aihe); asettaa sähköpostin aiheen
    • $this->sähköposti->viesti($viesti); asettaa sähköpostiviestin
    • jos ($this->email->send()) {…} yrittää lähettää sähköpostin. Jos sähköpostin lähetys onnistui, viesti Sähköpostisi on lähetetty onnistuneesti, muuten virheenkorjaustiedot tulostetaan siihen, mikä on voinut mennä pieleen.

Määritetään nyt sähköpostireitit

Sähköpostireitit

Lisää seuraavat reitit tiedostoon application/config/routes.php

$route['send-email'] = 'EmailController';
$route['email'] = 'EmailController/send';

Voimme nyt ladata yhteystietolomakkeen verkkoselaimeen

Aloitetaan sisäänrakennettu PHP-palvelin

Avaa pääte/komentorivi ja selaa sovelluksesi juureen. Minun tapauksessani juuri sijaitsee asemassa C:\Sites\ci-app

cd C:\Sites\ci-app

käynnistä palvelin seuraavalla komennolla

php -S localhost:3000

Lataa seuraava URL-osoite verkkoselaimeen: http://localhost:3000/send-email

Sinun pitäisi pystyä näkemään seuraava lomake

Sähköpostireitit

Kirjoita vastaanottajan sähköpostiosoite, aihe ja sähköpostiviesti ja napsauta sitten Lähetä sähköposti. Jos sähköpostiasetukset on määritetty oikein, sinun pitäisi nähdä onnistunut viesti.

Yhteenveto

Sisäänrakennettu sähköpostikirjasto helpottaa sähköpostien lähettämistä minimikoodilla. Kirjasto on myös erittäin joustava siinä mielessä, että voit muokata sen tarpeidesi mukaan.