Hur man skickar e-post med CodeIgniter
E-post är mycket viktigt i webbapplikationer. När en användare registrerar sig kanske vi vill skicka dem ett e-postmeddelande för att verifiera sin e-postadress och tillåta användaren att bekräfta prenumerationen. Vi använder även e-post för att återställa glömda lösenord, skicka faktura och kvitton till kunder, etc. CodeIgniter gör det superenkelt för oss att skicka e-postmeddelanden från vår applikation med en mängd olika alternativ.
CodeIgniter har ett inbyggt e-postbibliotek som vi kan arbeta med när vi skickar e-post.
CodeIgniter e-postkonfiguration
Vi behöver ha en central plats där vi kan hantera e-postinställningarna. CodeIgniter kommer inte med en konfigurationsfil för e-post så vi måste skapa en själva.
Skapa en fil email.php i katalogapplikationen/config
Lägg till följande kod till 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 );
HÄR,
- 'protocol' => 'smtp', anger vilket protokoll du vill använda när du skickar e-post. Detta kan vara smtp-inställningar för Gmail eller smtp-inställningar från din värd
- 'smtp_host' => 'smtp.example.com', specificerar smtp-värden. Om du till exempel vill använda Gmail skulle du ha något som smtp.gmail.com
- 'smtp_port' => 465, en öppen port på den angivna smtp-värden som har konfigurerats för smtp-post
- 'smtp_user' => 'no-reply@example.com', e-postadressen som kommer att användas som avsändare när du skickar e-post. Detta bör vara en giltig e-postadress som finns på servern
- 'smtp_pass' => '12345!', lösenordet till den angivna smtp-användarens e-postadress
- 'smtp_crypto' => 'ssl', anger vilken krypteringsmetod som ska användas, dvs ssl, tls etc.
- 'email type' => 'text', anger vilken e-posttyp som ska användas. Detta kan vara antingen vanlig text eller HTML beroende på dina behov.
- 'smtp_timeout' => '4', anger tiden i sekunder som ska förflyta när man försöker ansluta till värden innan ett timeout-undantag kastas.
- 'charset' => 'iso-8859-1', definierar teckenuppsättningen som ska användas när du skickar e-post.
- 'wordwrap' => TRUE är inställt på TRUE och därefter aktiveras word-wrap. Om den är inställd på FALSE, är ordlindning inte aktiverad
Anmärkningar: för att skicka e-postmeddelanden till jobbet bör du ange giltiga konfigurationsparametrar. Dummy-parametrar kommer inte att kunna skicka e-post.
CodeIgniter E-postvy
I det här avsnittet skapar vi vyn som skickar e-postmeddelandet till mottagaren.
Skapa en ny katalogmail i applikation/vyer
Skapa en ny fil contact.php application/views/email
Lägg till följande kod till 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>
HÄR,
- Vi har ett grundläggande HTML-formulär som accepterar e-post, ämne och meddelande och skickar sedan parametrarna till e-postrutten.
CodeIgniter e-postkontroll
Låt oss nu skapa kontrollenheten som kommer att hantera att skicka e-post
Skapa en ny fil EmailController.php i application/controllers/EmailController.php
Lägg till följande kod till 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()); } } }
HÄR,
- class EmailController utökar CI_Controller {...} definierar vår e-postkontroller som utökar den överordnade CodeIgniter-kontrollern.
- public funktion __construct() {...} definierar den underordnade konstruktorn som anropar den överordnade konstruktormetoden.
- public function index() {...} definierar indexmetoden som visar kontaktformuläret
- function send() {...} definierar metoden som skickar e-postmeddelandet
- $this->load->config('e-post'); laddar e-postkonfigurationsinställningarna
- $this->load->library('e-post'); laddar e-postbiblioteket
- $from = $this->config->item('smtp_user'); hämtar avsändar-id från e-postkonfigurationsfilen som vi definierade.
- $to = $this->input->post('to'); får värdet från det inskickade formuläret
- $subject = $this->input->post('subject'); ställer in e-postmeddelandet från formuläret
- $message = $this->input->post('meddelande'); ställer in e-postmeddelandet från formuläret
- $this->email->set_newline(“\r\n”); definierar de nya radtecknen för e-postmeddelanden
- $this->email->from($from); ställer in avsändarens e-postadress
- $this->email->to($to); ställer in mottagarens e-postadress
- $this->email->subject($subject); ställer in e-postämnet
- $this->email->message($message); ställer in e-postmeddelandet
- om ($this->email->send()) {...} försöker skicka e-postmeddelandet. Om e-postmeddelandet skickas framgångsrikt skrivs meddelandet Din e-post har skickats, annars skrivs felsökningsinformation ut om vad som kan ha gått fel.
Låt oss nu definiera e-postrutter
E-postrutter
Lägg till följande rutter till application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Vi kan nu ladda kontaktformuläret i webbläsaren
Låt oss starta den inbyggda PHP-servern
Öppna terminalen/kommandoraden och bläddra till roten av din applikation. I mitt fall finns roten i enhet C:\Sites\ci-app
cd C:\Sites\ci-app
starta servern med följande kommando
php -S localhost:3000
Ladda följande URL i din webbläsare: http://localhost:3000/send-email
Du bör kunna se följande formulär
Ange mottagarens e-post, ämne och e-postmeddelande och klicka sedan på Skicka e-post. Om dina e-postkonfigurationer är korrekt inställda bör du kunna se det framgångsrika meddelandet.
Sammanfattning
Det inbyggda e-postbiblioteket gör det enkelt för oss att skicka e-postmeddelanden med minimal kod. Biblioteket är också mycket flexibelt i den meningen att du kan konfigurera det för att uppfylla dina krav.