Sådan sender du e-mail ved hjælp af CodeIgniter
E-mail er meget vigtig i webapplikationer. Når en bruger tilmelder sig, vil vi måske sende dem en e-mail for at bekræfte deres e-mailadresse og tillade brugeren at bekræfte abonnementet. Vi bruger også e-mail til at nulstille glemte adgangskoder, sende faktura og kvitteringer til kunder osv. CodeIgniter gør det super nemt for os at sende e-mails fra vores applikation ved hjælp af en række muligheder.
CodeIgniter har et indbygget e-mail-bibliotek, som vi kan arbejde med, når vi sender e-mails.
CodeIgniter e-mail-konfiguration
Vi skal have et centralt sted, hvor vi kan administrere e-mail-indstillingerne. CodeIgniter kommer ikke med en konfigurationsfil til e-mails, så vi bliver nødt til at oprette en selv.
Opret en fil email.php i mappeapplikationen/config
Tilføj følgende kode til 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 );
HER,
- 'protocol' => 'smtp', angiver den protokol, du vil bruge, når du sender e-mail. Dette kan være Gmail smtp-indstillinger eller smtp-indstillinger fra din vært
- 'smtp_host' => 'smtp.example.com', specificerer smtp-værten. For eksempel, hvis du vil bruge Gmail, vil du have noget som smtp.gmail.com
- 'smtp_port' => 465, en åben port på den angivne smtp-vært, der er konfigureret til smtp-mail
- 'smtp_user' => 'no-reply@example.com', den e-mailadresse, der vil blive brugt som afsender ved afsendelse af e-mails. Dette bør være en gyldig e-mailadresse, der findes på serveren
- 'smtp_pass' => '12345!', adgangskoden til den angivne smtp-bruger-e-mail
- 'smtp_crypto' => 'ssl', angiver den krypteringsmetode, der skal bruges, dvs. ssl, tls osv.
- 'email type' => 'tekst', indstiller den mailtype, der skal bruges. Dette kan være enten almindelig tekst eller HTML afhængigt af dine behov.
- 'smtp_timeout' => '4', specificerer den tid i sekunder, der skal gå, når du forsøger at oprette forbindelse til værten, før en timeout-undtagelse udløses.
- 'charset' => 'iso-8859-1', definerer det tegnsæt, der skal bruges ved afsendelse af e-mails.
- 'wordwrap' => TRUE er sat til TRUE, hvorefter word-wrap er aktiveret. Hvis den er sat til FALSK, er ordombrydning ikke aktiveret
Bemærk: for at sende e-mails på arbejde, skal du angive gyldige konfigurationsparametre. Dummy-parametre vil ikke være i stand til at sende e-mails.
CodeIgniter e-mailvisning
I dette afsnit vil vi oprette den visning, der sender e-mailen til modtageren.
Opret en ny adressebogs-e-mail i applikation/visninger
Opret en ny fil contact.php application/views/email
Tilføj følgende kode til 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>
HER,
- Vi har en grundlæggende HTML-formular, der accepterer e-mailen, emnet og meddelelsen og sender derefter parametrene til e-mail-ruten.
CodeIgniter e-mail-controller
Lad os nu oprette den controller, der skal håndtere afsendelse af e-mail
Opret en ny fil EmailController.php i application/controllers/EmailController.php
Tilføj følgende kode til 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()); } } }
HER,
- class EmailController udvider CI_Controller {...} definerer vores e-mail-controller, der udvider den overordnede CodeIgniter-controller.
- public funktion __construct() {...} definerer den underordnede konstruktør, der kalder den overordnede konstruktørmetode.
- public function index() {...} definerer indeksmetoden, der viser kontaktformularen
- funktion send() {...} definerer metoden, der sender e-mailen
- $this->load->config('e-mail'); indlæser e-mail-konfigurationsindstillingerne
- $this->load->library('e-mail'); indlæser e-mail-biblioteket
- $from = $this->config->item('smtp_user'); får afsender-id'et fra e-mail-konfigurationsfilen, som vi har defineret.
- $to = $this->input->post('to'); får værdien fra den indsendte formular
- $subject = $this->input->post('emne'); angiver den e-mail, der er genstand for fra formularen
- $message = $this->input->post('besked'); indstiller e-mail-beskeden fra formularen
- $this->email->set_newline(“\r\n”); definerer de nye linjetegn for e-mails
- $this->e-mail->fra($fra); indstiller afsenderens e-mailadresse
- $this->email->to($to); indstiller modtagerens e-mailadresse
- $this->email->subject($subject); indstiller e-mail-emnet
- $this->email->message($message); indstiller e-mail-beskeden
- hvis ($this->email->send()) {...} forsøger at sende e-mailen. Hvis e-mailen er sendt med succes, er meddelelsen Din e-mail er blevet sendt, ellers udskrives fejlretningsoplysninger om, hvad der kunne være gået galt.
Lad os nu definere e-mail-ruterne
E-mail ruter
Tilføj følgende ruter til application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Vi kan nu indlæse kontaktformularen i webbrowseren
Lad os starte den indbyggede PHP-server
Åbn terminalen/kommandolinjen, og søg til roden af din applikation. I mit tilfælde er roden placeret i drev C:\Sites\ci-app
cd C:\Sites\ci-app
start serveren ved hjælp af følgende kommando
php -S localhost:3000
Indlæs følgende URL i din webbrowser: http://localhost:3000/send-email
Du bør kunne se følgende formular
Indtast modtagerens e-mail, emne og e-mail, og klik derefter på Send e-mail. Hvis dine e-mail-konfigurationer er indstillet korrekt, bør du kunne se den vellykkede meddelelse.
Resumé
Det indbyggede e-mail-bibliotek gør det nemt for os at sende e-mails med minimal kode. Biblioteket er også meget fleksibelt i den forstand, at du kan konfigurere det til at opfylde dine krav.