Slik sender du e-post ved hjelp av CodeTenner
⚡ Smart oppsummering
CodeIgniter Sending Email er avhengig av rammeverkets innebygde e-postbibliotek for å levere meldinger via SMTP eller den lokale e-postserveren. Dette eksemplet oppretter en e-postkonfigurasjonsfil, en kontaktskjemavisning og en kontroller som leser skjemainndata og sender meldingen.
E-post er svært viktig i webapplikasjoner. Når en bruker registrerer seg, kan det være lurt å sende dem en e-post for å bekrefte e-postadressen deres og la brukeren bekrefte abonnementet. Vi bruker også e-post til å tilbakestille glemte passord og sende fakturaer og kvitteringer til kunder. CodeIgniter gjør det superenkelt for oss å sende e-poster fra applikasjonen vår ved hjelp av en rekke alternativer.
CodeIgniter har et innebygd e-postbibliotek som vi kan jobbe med når vi sender e-poster.
CodeIgniter e-postkonfigurasjon
Vi trenger et sentralt sted hvor vi kan administrere e-postinnstillingene. CodeIgniter leveres ikke med en konfigurasjonsfil for e-poster, så vi må lage en selv.
Opprett en fil email.php i katalogapplikasjonen/config
Legg til følgende kode i 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', angir protokollen du vil bruke når du sender e-post. Dette kan være Gmail SMTP-innstillinger eller SMTP-innstillinger fra verten din
- 'smtp_host' => 'smtp.example.com', angir SMTP-verten. Hvis du for eksempel vil bruke Gmail da ville du ha noe sånt som smtp.gmail.com
- 'smtp_port' => 465, en åpen port på den angitte SMTP-verten som er konfigurert for SMTP-e-post
- 'smtp_user' => 'no-reply@example.com', e-postadressen som vil bli brukt som avsender når du sender e-post. Dette bør være en gyldig e-postadresse som finnes på serveren
- 'smtp_pass' => '12345!', passordet til den angitte SMTP-brukerens e-postadresse
- 'smtp_crypto' => 'ssl', spesifiserer krypteringsmetoden som skal brukes, f.eks. ssl, tls osv.
- 'mailtype' => 'tekst', angir e-posttypen som skal brukes. Dette kan enten være ren tekst eller HTML, avhengig av dine behov.
- 'smtp_timeout' => '4', spesifiserer tiden i sekunder som skal gå når du prøver å koble til verten før et timeout-unntak blir kastet.
- 'charset' => 'iso-8859-1', definerer tegnsettet som skal brukes ved sending av e-post.
- 'wordwrap' => TRUE, hvis satt til TRUE er ordbryting aktivert. Hvis satt til FALSE er ikke ordbryting aktivert
Merknader: for å sende e-poster på jobb, bør du oppgi gyldige konfigurasjonsparametere. Dummy-parametere vil ikke kunne sende e-poster.
CodeIgniter Email View
I denne delen vil vi lage visningen som sender e-posten til mottakeren.
Opprett en ny katalog-e-post i applikasjon/visninger
Opprett en ny fil `contact.php` i `application/views/email`
Legg til følgende kode i 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>
HER,
- Vi har et grunnleggende HTML-skjema som godtar e-post, emne og melding, og deretter sender parameterne til e-postruten.
CodeIgniter e-postkontroller
La oss nå opprette kontrolleren som skal håndtere sending av e-post.
Opprett en ny fil EmailController.php i application/controllers/EmailController.php
Legg til 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,
- klasse EmailController extends CI_Controller {…} definerer e-postkontrolleren vår som utvider den overordnede CodeTennregulator.
- offentlig funksjon __construct() {...} definerer den underordnede konstruktøren som kaller den overordnede konstruktørmetoden.
- public function index() {...} definerer indeksmetoden som viser kontaktskjemaet
- function send() {...} definerer metoden som sender e-posten
- $this->load->config('e-post'); laster e-postkonfigurasjonsinnstillingene
- $this->load->library('e-post'); laster e-postbiblioteket
- $from = $this->config->item('smtp_user'); henter avsender-ID fra e-postkonfigurasjonsfilen som vi definerte.
- $to = $this->input->post('to'); får verdien fra det innsendte skjemaet
- $emne = $this->input->post('emne'); angir emnet for e-posten fra skjemaet
- $message = $this->input->post('melding'); setter e-postmeldingen fra skjemaet
- $this->email->set_newline(“\r\n”); definerer de nye linjetegnene for e-poster
- $this->e-post->fra($fra); angir avsenderens e-postadresse
- $this->email->to($to); angir mottakerens e-postadresse
- $this->email->subject($subject); angir e-postemnet
- $this->email->message($message); angir e-postmeldingen
- hvis ($this->email->send()) {…} prøver å sende e-posten. Hvis e-posten sendes, vises meldingen «E-posten din er sendt», ellers skrives det ut feilsøkingsinformasjon om hva som kan ha gått galt.
La oss nå definere e-postrutene.
E-postruter
Legg til følgende ruter til application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Vi kan nå laste inn kontaktskjemaet i nettleseren.
La oss starte den innebygde PHP-serveren.
Åpne terminalen eller kommandolinjen og bla til rotmappen til applikasjonen din. I mitt tilfelle ligger rotmappen på stasjon C:\Sites\ci-app
cd C:\Sites\ci-app
Start serveren ved å bruke følgende kommando
php -S localhost:3000
Last inn følgende URL i nettleseren din: http://localhost:3000/send-email
Du skal kunne se følgende skjema
Skriv inn mottakerens e-postadresse, emne og e-postmelding, og klikk deretter på Send e-post. Hvis e-postkonfigurasjonen din er riktig angitt, skal du kunne se meldingen om at søknaden var vellykket.
Slik sender du HTML-e-poster og vedlegg i CodeTenner
Det samme e-postbiblioteket kan sende meldinger og filer i rikt format. To små endringer gjør om eksemplet med ren tekst ovenfor til en HTML-e-post med et vedlegg.
$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'): forteller biblioteket at brødteksten inneholder HTML, slik at tagger som overskrifter og lenker gjengis i mottakerens innboks.
- feste(): legger til en fil fra en serversti i meldingen; kall den én gang for hver fil før send().
Husk at HTML-e-poster fortsatt bør inneholde et alternativ i ren tekst, og store vedlegg kan bli avvist av strenge e-postservere.


