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