Sådan sender du e-mail ved hjælp af Codetændsats
E-mail er meget vigtig i webapplikationer. Når en bruger tilmelder sig, kan vi sende dem en e-mail for at bekræfte deres e-mailadresse og give brugeren mulighed for at bekræfte abonnementet. Vi bruger også e-mail til at nulstille glemte adgangskoder, sende fakturaer 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 forskellige muligheder.
CodeIgniter har et indbygget e-mailbibliotek, som vi kan arbejde med, når vi sender e-mails.
CodeIgniter e-mail-konfiguration
Vi har brug for et centralt sted, hvor vi kan administrere e-mailindstillingerne. CodeIgniter leveres 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 kunne være Gmail smtp-indstillinger eller smtp-indstillinger fra din vært
- 'smtp_host' => 'smtp.example.com' angiver smtp-værten. Hvis du f.eks. vil bruge Gmail så ville du have noget i retning af 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 Email View
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,
- klasse EmailController extends CI_Controller {…} definerer vores e-mail-controller, der udvider den overordnede CodeTændingsregulator.
- 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.

