Hoe u e-mail kunt verzenden met CodeIgniter
E-mail is erg belangrijk in webapplicaties. Wanneer een gebruiker zich aanmeldt, willen we hem of haar misschien een e-mail sturen om zijn of haar e-mailadres te verifiëren en de gebruiker de mogelijkheid te geven om het abonnement te bevestigen. We gebruiken e-mail ook om vergeten wachtwoorden opnieuw in te stellen, facturen en ontvangstbewijzen naar klanten te sturen, etc. CodeIgniter maakt het supergemakkelijk voor ons om e-mails te versturen vanuit onze applicatie met behulp van verschillende opties.
CodeIgniter heeft een ingebouwde e-mailbibliotheek waarmee u kunt werken bij het verzenden van e-mails.
CodeIgniter e-mailconfiguratie
We hebben een centrale plek nodig waar we de e-mailinstellingen kunnen beheren. CodeIgniter wordt niet geleverd met een configuratiebestand voor e-mails, dus we zullen er zelf een moeten maken.
Maak een bestand email.php in de map application/config
Voeg de volgende code toe aan 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 );
HIER,
- 'protocol' => 'smtp', specificeert het protocol dat u wilt gebruiken bij het verzenden van e-mail. Dit kunnen Gmail smtp-instellingen of smtp-instellingen van uw host zijn
- 'smtp_host' => 'smtp.example.com', specificeert de smtp-host. Als u bijvoorbeeld Gmail wilt gebruiken, dan zou u zoiets als smtp.gmail.com hebben
- 'smtp_port' => 465, een open poort op de opgegeven smtp-host die is geconfigureerd voor smtp-mail
- 'smtp_user' => 'no-reply@example.com', het e-mailadres dat als afzender wordt gebruikt bij het verzenden van e-mails. Dit moet een geldig e-mailadres zijn dat op de server bestaat
- 'smtp_pass' => '12345!', het wachtwoord voor het opgegeven smtp-gebruikers-e-mailadres
- 'smtp_crypto' => 'ssl', specificeert de te gebruiken versleutelingsmethode, dwz ssl, tls enz.
- 'email type' => 'text', stelt het te gebruiken mailtype in. Dit kan platte tekst of HTML zijn, afhankelijk van uw behoeften.
- 'smtp_timeout' => '4', specificeert de tijd in seconden die moet verstrijken wanneer wordt geprobeerd verbinding te maken met de host voordat er een time-outuitzondering wordt gegenereerd.
- 'charset' => 'iso-8859-1', definieert de tekenset die moet worden gebruikt bij het verzenden van e-mails.
- 'word-wrap' => TRUE is ingesteld op TRUE en word-wrap is ingeschakeld. Als deze is ingesteld op FALSE, is tekstomloop niet ingeschakeld
Note: om e-mails te kunnen verzenden, moet u geldige configuratieparameters opgeven. Dummy-parameters kunnen geen e-mails verzenden.
CodeIgniter E-mailweergave
In dit gedeelte maken we de weergave waarmee de e-mail naar de ontvanger wordt verzonden.
Maak een nieuw directory-e-mailadres in de toepassing/weergaven
Maak een nieuw bestand contact.php application/views/email
Voeg de volgende code toe aan 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>
HIER,
- We hebben een eenvoudig HTML-formulier dat de e-mail, het onderwerp en het bericht accepteert en vervolgens de parameters doorgeeft aan de e-mailroute.
CodeIgniter E-mailcontroller
Laten we nu de controller maken die het verzenden van e-mails zal afhandelen
Maak een nieuw bestand EmailController.php in application/controllers/EmailController.php
Voeg de volgende code toe aan 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()); } } }
HIER,
- klasse EmailController extends CI_Controller {…} definieert onze e-mailcontroller die de bovenliggende CodeIgniter-controller uitbreidt.
- public function __construct() {…} definieert de onderliggende constructor die de ouderconstructormethode aanroept.
- public function index() {…} definieert de indexmethode die het contactformulier weergeeft
- functie send() {…} definieert de methode die de e-mail verzendt
- $this->load->config('email'); laadt de e-mailconfiguratie-instellingen
- $this->load->library('email'); laadt de e-mailbibliotheek
- $from = $this->config->item('smtp_user'); haalt de afzender-id op uit het e-mailconfiguratiebestand dat we hebben gedefinieerd.
- $to = $dit->invoer->post('naar'); haalt de to-waarde uit het ingediende formulier
- $subject = $this->input->post('subject'); stelt het e-mailadres in dat aan het formulier is onderworpen
- $message = $this->input->post('message'); stelt het e-mailbericht in van het formulier
- $this->email->set_newline(“\r\n”); definieert de nieuwe regeltekens voor e-mails
- $this->email->from($from); stelt het e-mailadres van de afzender in
- $this->email->to($to); stelt het e-mailadres van de ontvanger in
- $this->email->subject($subject); stelt het e-mailonderwerp in
- $this->email->message($message); stelt het e-mailbericht in
- als ($this->email->send()) {…} probeert de e-mail te verzenden. Als de e-mail succesvol is verzonden, dan verschijnt het bericht Uw e-mail is succesvol verzonden, anders wordt er foutinformatie afgedrukt over wat er mis kan zijn gegaan.
Laten we nu de e-mailroutes definiëren
E-mailroutes
Voeg de volgende routes toe aan application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
We kunnen nu het contactformulier in de webbrowser laden
Laten we de ingebouwde PHP-server starten
Open de terminal/opdrachtregel en blader naar de hoofdmap van uw toepassing. In mijn geval bevindt de root zich in station C:\Sites\ci-app
cd C:\Sites\ci-app
start de server met de volgende opdracht
php -S localhost:3000
Laad de volgende URL in uw webbrowser: http://localhost:3000/send-email
U zou het volgende formulier moeten kunnen zien
Voer het e-mailadres van de ontvanger, het onderwerp en het e-mailbericht in en klik op E-mail verzenden. Als uw e-mailconfiguraties correct zijn ingesteld, zou u het succesvolle bericht moeten kunnen zien.
Samenvatting
De ingebouwde e-mailbibliotheek maakt het voor ons gemakkelijk om e-mails te versturen met minimale code. De bibliotheek is ook erg flexibel in de zin dat u deze kunt configureren om aan uw vereisten te voldoen.