Sähköpostin lähettäminen käyttämällä Codesytytin
⚡ Älykäs yhteenveto
CodeIgniter Sending Email käyttää kehyksen sisäänrakennettua sähköpostikirjastoa viestien toimittamiseen SMTP:n tai paikallisen sähköpostipalvelimen kautta. Tämä esimerkki luo sähköpostimääritystiedoston, yhteydenottolomakenäkymän ja ohjaimen, joka lukee lomakkeen syötteen ja lähettää viestin.

Sähköposti on erittäin tärkeä verkkosovelluksissa. Kun käyttäjä rekisteröityy, saatamme haluta lähettää hänelle sähköpostia vahvistaaksemme hänen sähköpostiosoitteensa ja antaaksemme käyttäjälle mahdollisuuden vahvistaa tilauksen. Käytämme sähköpostia myös unohtuneiden salasanojen palauttamiseen ja laskujen ja kuittien lähettämiseen asiakkaille. CodeIgniterin avulla sähköpostien lähettäminen sovelluksestamme on meille erittäin helppoa useilla eri tavoilla.
CodeIgniterissä on sisäänrakennettu sähköpostikirjasto, jota voimme käyttää sähköpostien lähettämisessä.
CodeSytyttimen sähköpostin määritys
Meidän on löydettävä keskitetty paikka, josta voimme hallita sähköpostiasetuksia. CodeIgniterissä ei ole sähköpostien määritystiedostoa, 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ää sähköpostin lähettämiseen käytettävän protokollan. Tämä voi olla Gmail SMTP-asetukset tai isäntälaitteesi SMTP-asetukset
- 'smtp_host' => 'smtp.example.com' määrittää SMTP-isännän. Jos esimerkiksi haluat käyttää Gmail niin sinulla olisi jotain tyyliin smtp.gmail.com
- 'smtp_port' => 465, SMTP-postia varten määritetty avoin portti määritetyllä SMTP-isännällä
- '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!', määritetyn SMTP-käyttäjän sähköpostiosoitteen salasana
- 'smtp_crypto' => 'ssl', määrittää käytettävän salausmenetelmän, esim. ssl, tls jne.
- 'mailtype' => '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, jos arvo on TOSI, sananrivitys on käytössä. Jos arvo on EPÄTOSI, sananrivitys 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.
CodeSytyttimen 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 kansioon 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(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>
TÄSSÄ,
- Meillä on yksinkertainen HTML-lomake, joka hyväksyy sähköpostin, aiheen ja viestin ja välittää sitten parametrit sähköpostireitille.
CodeIgniter-sähköpostin ohjain
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 extends CI_Controller {…} määrittelee sähköpostiohjaimemme, joka laajentaa pääobjektia CodeSytyttimen ohjain.
- 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 sähköpostin aiheen lomakkeen perusteella
- $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öpostia. Jos sähköpostin lähetys onnistuu, näytetään viesti ”Sähköpostiviestisi on lähetetty onnistuneesti”, muuten tulostetaan virheenkorjaustiedot siitä, mikä on saattanut mennä pieleen.
Määritellää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 yhteydenottolomakkeen verkkoselaimeen.
Käynnistämme sisäänrakennetun PHP-palvelimen.
Avaa pääte tai komentorivi ja selaa sovelluksesi juurihakemistoon. Minun tapauksessani juurihakemisto sijaitsee asemassa C:\Sites\ci-app.
cd C:\Sites\ci-app
Käynnistä palvelin seuraavalla komennolla
php -S localhost:3000
Lataa seuraavat URL verkkoselaimessasi: 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öpostia. Jos sähköpostimäärityksesi on määritetty oikein, sinun pitäisi nähdä onnistumisviesti.
HTML-sähköpostien ja liitteiden lähettäminen Codesytytin
Sama sähköpostikirjasto voi lähettää monipuolisesti muotoiltuja viestejä ja tiedostoja. Kaksi pientä muutosta muuttaa yllä olevan pelkkää tekstiä sisältävän esimerkin HTML-sähköpostiksi liitteineen.
$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'): kertoo kirjastolle, että leipäteksti sisältää HTML-koodia, joten tagit, kuten otsikot ja linkit, näkyvät vastaanottajan postilaatikossa.
- liittää(): lisää viestiin tiedoston palvelimen polusta; kutsu sitä kerran jokaiselle tiedostolle ennen send()-funktiota.
Muista, että HTML-sähköposteissa tulisi silti olla pelkkää tekstiä sisältävä vaihtoehto, ja tiukat sähköpostipalvelimet saattavat hylätä suuret liitteet.

