Kuidas saata e-kirja, kasutades Codeelektrisütik
⚡ Nutikas kokkuvõte
CodeIgniter Sending Email tugineb raamistiku sisseehitatud e-posti teekile, et edastada sõnumeid SMTP või kohaliku meiliserveri kaudu. See näide loob e-posti konfiguratsioonifaili, kontaktvormi vaate ja kontrolleri, mis loeb vormi sisendit ja saadab sõnumi välja.
Veebirakendustes on meil väga oluline roll. Kui kasutaja registreerub, võime saata talle meili, et kinnitada tema meiliaadress ja võimaldada kasutajal tellimus kinnitada. Samuti kasutame meili unustatud paroolide lähtestamiseks ning klientidele arvete ja kviitungite saatmiseks. CodeIgniter teeb meie rakendusest meilide saatmise ülilihtsaks, kasutades mitmesuguseid võimalusi.
CodeIgniteril on sisseehitatud e-posti teek, millega saame e-kirju saates töötada.
CodeSüütaja e-posti konfiguratsioon
Meil on vaja keskset kohta, kus saame hallata e-posti seadeid. CodeIgniteril ei ole meilide konfiguratsioonifaili kaasas, seega peame selle ise looma.
Looge kataloogis application/config fail email.php
Lisage aadressile email.php järgmine kood
<?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 );
SIIN,
- 'protocol' => 'smtp', määrab protokolli, mida soovite e-kirjade saatmisel kasutada. See võib olla Gmail SMTP-seaded või teie hosti SMTP-seaded
- 'smtp_host' => 'smtp.example.com' määrab SMTP hosti. Näiteks kui soovite kasutada Gmail siis oleks sul midagi sellist nagu smtp.gmail.com
- 'smtp_port' => 465, avatud port määratud SMTP-hostil, mis on konfigureeritud SMTP-posti jaoks
- 'smtp_user' => 'no-reply@example.com', e-posti aadress, mida kasutatakse e-kirjade saatmisel saatjana. See peaks olema kehtiv e-posti aadress, mis on serveris olemas
- 'smtp_pass' => '12345!', määratud SMTP kasutaja e-posti aadressi parool
- 'smtp_crypto' => 'ssl', määrab kasutatava krüpteerimismeetodi, nt ssl, tls jne.
- 'mailtype' => 'text', määrab kasutatava kirja tüübi. See võib olla kas lihttekst või HTML, olenevalt teie vajadustest.
- 'smtp_timeout' => '4', määrab aja sekundites, mis peaks kuluma hostiga ühenduse loomisel enne ajalõpu erandi tegemist.
- 'charset' => 'iso-8859-1', määrab e-kirjade saatmisel kasutatava märgistiku.
- 'wordwrap' => TRUE, kui see on seatud väärtusele TRUE, siis on sõnamurdmine lubatud. Kui see on seatud väärtusele FALSE, siis sõnamurdmine ei ole lubatud.
märkused: e-kirjade tööle saatmiseks peaksite esitama kehtivad konfiguratsiooniparameetrid. Dummy parameetrid ei saa e-kirju saata.
CodeSüütaja e-posti vaade
Selles jaotises loome vaate, mis saadab e-kirja adressaadile.
Looge rakenduses/vaadetes uus kataloogi e-kiri
Loo uus fail nimega contact.php kausta application/views/email.
Lisage järgmine kood saidile 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>
SIIN,
- Meil on lihtne HTML-vorm, mis aktsepteerib e-posti aadressi, teema ja sõnumi ning edastab seejärel parameetrid e-posti marsruudile.
CodeIgniteri e-posti kontroller
Loome nüüd kontrolleri, mis hakkab e-kirjade saatmist haldama.
Looge rakenduses application/controllers/EmailController.php uus fail EmailController.php
Lisage saidile EmailController.php järgmine kood
<?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()); } } }
SIIN,
- Klass EmailController laiendab CI_Controllerit {…} defineerib meie e-posti kontrolleri, mis laiendab ülemobjekti CodeSüütekontroller.
- avalik funktsioon __construct() {…} määrab alamkonstruktori, mis kutsub esile emakonstruktori meetodi.
- public function index() {…} määrab indeksi meetodi, mis kuvab kontaktivormi
- funktsioon send() {…} määrab e-kirja saatmise meetodi
- $this->load->config('email'); laadib meili konfiguratsiooniseaded
- $this->load->library('email'); laadib meiliteegi
- $from = $this->config-> item('smtp_user'); saab saatja ID meie määratletud meili konfiguratsioonifailist.
- $to = $see->sisend->postitus('kulle'); saab esitatud vormilt väärtuse väärtuse
- $subject = $this->input->post('subject'); määrab vormilt meili teema
- $teade = $see->sisend->postitus('sõnum'); määrab vormilt meilisõnumi
- $this->email->set_newline(“\r\n”); määrab e-kirjade uued reamärgid
- $this->email->from($from); määrab saatja e-posti aadressi
- $see->e-post->to($sataja); määrab saaja meiliaadressi
- $see->e-post->teema($teema); määrab meili teema
- $see->e-post->sõnum($teade); määrab meilisõnumi
- kui ($this->email->send()) {…} üritab meili saata. Kui meili saatmine õnnestus, kuvatakse teade „Teie meil on edukalt saadetud”, vastasel juhul trükitakse veateate teave selle kohta, mis võis valesti minna.
Defineerime nüüd e-posti marsruudid.
E-posti marsruudid
Lisage saidile application/config/routes.php järgmised marsruudid
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Nüüd saame kontaktvormi veebibrauserisse laadida.
Käivitame sisseehitatud PHP serveri.
Ava terminal või käsurida ja sirvi oma rakenduse juurkataloogi. Minu puhul asub juurkataloog draivil C:\Sites\ci-app.
cd C:\Sites\ci-app
Käivitage server järgmise käsuga
php -S localhost:3000
Laadige järgmine URL oma veebibrauseris: http://localhost:3000/send-email
Peaksite nägema järgmist vormi
Sisestage saaja e-posti aadress, teema ja e-posti sõnum ning seejärel klõpsake nuppu „Saada e-kiri”. Kui teie e-posti konfiguratsioon on õigesti seadistatud, peaksite nägema eduteadet.
Kuidas saata HTML-e-kirju ja manuseid Codeelektrisütik
Sama e-posti teek saab saata rikkalikult vormindatud sõnumeid ja faile. Kaks väikest muudatust muudavad ülaltoodud lihtteksti näite HTML-meiliks koos manusega.
$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'): annab teekile teada, et sisu sisaldab HTML-i, seega kuvatakse sildid, näiteks pealkirjad ja lingid, saaja postkastis.
- manusta(): lisab sõnumile serveri teelt faili; kutsu seda iga faili jaoks enne send() funktsiooni üks kord välja.
Pea meeles, et HTML-vormingus meilid peaksid ikkagi sisaldama lihtteksti alternatiivi ja ranged meiliserverid võivad suured manused tagasi lükata.


