Hoe e-mails te verzenden met Codeontsteker
⚡ Slimme samenvatting
CodeIgniter Sending Email maakt gebruik van de ingebouwde e-mailbibliotheek van het framework om berichten te verzenden via SMTP of de lokale mailserver. Dit voorbeeld maakt een e-mailconfiguratiebestand, een contactformulierweergave en een controller die de formulierinvoer leest en het bericht verzendt.
E-mail is erg belangrijk in webapplicaties. Wanneer een gebruiker zich aanmeldt, willen we hem of haar mogelijk een e-mail sturen om het e-mailadres te verifiëren en de gebruiker de mogelijkheid te geven het abonnement te bevestigen. We gebruiken e-mail ook om vergeten wachtwoorden te resetten en facturen en ontvangstbewijzen naar klanten te versturen. CodeIgniter maakt het voor ons supergemakkelijk om vanuit onze applicatie e-mails te versturen met behulp van verschillende opties.
CodeIgniter heeft een ingebouwde e-mailbibliotheek waarmee we e-mails kunnen versturen.
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 kan zijn Gmail SMTP-instellingen of SMTP-instellingen van uw host
- 'smtp_host' => 'smtp.example.com' specificeert de SMTP-host. Bijvoorbeeld, als u wilt gebruiken Gmail Dan zou je zoiets hebben als smtp.gmail.com.
- '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, bijvoorbeeld ssl, tls, enz.
- 'mailtype' => 'text', hiermee wordt het te gebruiken e-mailtype ingesteld. 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.
- 'wordwrap' => TRUE. Als deze waarde op TRUE staat, is woordterugloop ingeschakeld. Als deze waarde op FALSE staat, is woordterugloop 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 aan in de map 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(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>
HIER,
- We hebben een eenvoudig HTML-formulier dat het e-mailadres, het onderwerp en het bericht accepteert en de parameters vervolgens 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,
- class EmailController extends CI_Controller {…} definieert onze e-mailcontroller die de parent uitbreidt. CodeOntstekingsregelaar.
- 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 onderwerp van de e-mail in op basis van het formulier.
- $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, wordt het bericht "Uw e-mail is succesvol verzonden" weergegeven; anders wordt debuginformatie afgedrukt over wat er mogelijk mis is 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 het contactformulier nu in de webbrowser laden.
Laten we de ingebouwde PHP-server starten.
Open de terminal of opdrachtregel en navigeer naar de hoofdmap van uw applicatie. In mijn geval bevindt de hoofdmap zich op schijf C:\Sites\ci-app
cd C:\Sites\ci-app
Start de server met het volgende commando.
php -S localhost:3000
Laad het 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 de e-mailtekst in en klik vervolgens op 'E-mail verzenden'. Als uw e-mailinstellingen correct zijn, zou u een bevestigingsbericht moeten zien.
Hoe verstuur je HTML-e-mails met bijlagen? Codeontsteker
Dezelfde e-mailbibliotheek kan berichten en bestanden met rijke opmaak verzenden. Met twee kleine aanpassingen wordt het bovenstaande voorbeeld in platte tekst omgezet in een HTML-e-mail met een bijlage.
$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'): Dit geeft de bibliotheek aan dat de body HTML bevat, zodat tags zoals koppen en links correct worden weergegeven in de inbox van de ontvanger.
- bijvoegen(): Voegt een bestand van een serverpad toe aan het bericht; roep deze functie één keer aan voor elk bestand voordat je het bericht verzendt (send()).
Houd er rekening mee dat HTML-e-mails altijd een alternatief in platte tekst moeten bevatten, en dat grote bijlagen door strenge mailservers kunnen worden geweigerd.


