Как да изпратите имейл с помощта на Codeподпалвач
Имейлът е много важен в уеб приложенията. Когато потребител се регистрира, може да поискаме да му изпратим имейл, за да потвърдим имейл адреса му и да му позволим да потвърди абонамента си. Използваме имейл и за нулиране на забравени пароли, изпращане на фактури и касови бележки на клиенти и др. CodeIgniter ни улеснява изключително много да изпращаме имейли от нашето приложение, използвайки различни опции.
CodeIgniter има вградена имейл библиотека, с която можем да работим, когато изпращаме имейли.
CodeКонфигурация на имейла на запалителя
Трябва да имаме централизирано място, където да можем да управляваме настройките на имейла. CodeIgniter не се предлага с конфигурационен файл за имейли, така че ще трябва да създадем сами такъв.
Създайте файл email.php в директорията application/config
Добавете следния код към 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
);
ТУК,
- „protocol“ => „smtp“ указва протокола, който искате да използвате при изпращане на имейл. Това може да бъде Gmail SMTP настройки или SMTP настройки от вашия хост
- „smtp_host“ => „smtp.example.com“ указва smtp хоста. Например, ако искате да използвате Gmail тогава ще имате нещо подобно на smtp.gmail.com
- 'smtp_port' => 465, отворен порт на посочения smtp хост, който е конфигуриран за smtp поща
- 'smtp_user' => 'no-reply@example.com', имейл адресът, който ще се използва като подател при изпращане на имейли. Това трябва да е валиден имейл адрес, който съществува на сървъра
- 'smtp_pass' => '12345!', паролата за посочения smtp потребителски имейл
- 'smtp_crypto' => 'ssl', указва метода на криптиране, който да се използва, т.е. ssl, tls и т.н.
- 'email type' => 'text', задава вида на пощата, който да се използва. Това може да бъде обикновен текст или HTML в зависимост от вашите нужди.
- 'smtp_timeout' => '4', указва времето в секунди, което трябва да изтече при опит за свързване с хоста, преди да бъде хвърлено изключение за изчакване.
- 'charset' => 'iso-8859-1', дефинира набора от знаци, който да се използва при изпращане на имейли.
- 'wordwrap' => TRUE е зададено на TRUE, след което пренасянето на думи е разрешено. Ако е настроено на FALSE, пренасянето на думи не е разрешено
Забележка: за да изпращате имейли за работа, трябва да предоставите валидни конфигурационни параметри. Фиктивните параметри няма да могат да изпращат имейли.
CodeПреглед на имейла на Igniter
В този раздел ще създадем изгледа, който ще изпрати имейла до получателя.
Създайте нов имейл указател в приложение/изгледи
Създайте нов файл contact.php application/views/email
Добавете следния код към 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>
ТУК,
- Имаме основен HTML формуляр, който приема имейла, темата и съобщението, след което предава параметрите към имейл маршрута.
CodeКонтролер за имейл на запалител
Нека сега създадем контролера, който ще управлява изпращането на имейл
Създайте нов файл EmailController.php в application/controllers/EmailController.php
Добавете следния код към 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());
}
}
}
ТУК,
- класът EmailController extends CI_Controller {…} дефинира нашия имейл контролер, който разширява родителския клас CodeКонтролер на запалката.
- публична функция __construct() {…} дефинира дъщерния конструктор, който извиква метода на родителския конструктор.
- публична функция index() {…} дефинира индексния метод, който показва формата за контакт
- функция send() {…} дефинира метода, който изпраща имейла
- $this->load->config('email'); зарежда настройките за конфигурация на имейл
- $this->load->library('имейл'); зарежда имейл библиотеката
- $from = $this->config->item('smtp_user'); получава идентификатора на изпращача от имейл конфигурационния файл, който сме дефинирали.
- $to = $this->input->post('to'); получава стойността на to от изпратения формуляр
- $subject = $this->input->post('subject'); задава имейла подложен от формуляра
- $message = $this->input->post('message'); задава имейл съобщението от формата
- $this->email->set_newline(“\r\n”); дефинира символите на новия ред за имейли
- $това->имейл->от($от); задава имейл адреса на изпращача
- $това->имейл->до($до); задава имейл адреса на получателя
- $това->имейл->тема($тема); задава темата на имейла
- $this->email->message($message); настройва имейл съобщението
- if ($this->email->send()) {…} се опитва да изпрати имейла. Ако имейлът е изпратен успешно, тогава съобщението Вашият имейл е изпратен успешно, друга информация за отстраняване на грешки се отпечатва върху това, което може да се е объркало.
Нека сега дефинираме имейл маршрутите
Имейл маршрути
Добавете следните маршрути към application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Вече можем да заредим формата за контакти в уеб браузъра
Нека стартираме вградения PHP сървър
Отворете терминала/командния ред и прегледайте корена на вашето приложение. В моя случай коренът се намира в устройство C:\Sites\ci-app
cd C:\Sites\ci-app
стартирайте сървъра, като използвате следната команда
php -S localhost:3000
Заредете следното URL във вашия уеб браузър: http://localhost:3000/send-email
Трябва да можете да видите следния формуляр
Въведете имейла на получателя, темата и имейл съобщението, след което щракнете върху Изпращане на имейл. Ако вашите имейл конфигурации са зададени правилно, тогава трябва да можете да видите успешното съобщение.
Oбобщение
Вградената имейл библиотека ни улеснява да изпращаме имейли с минимален код. Библиотеката също е много гъвкава в смисъл, че можете да я конфигурирате, за да отговаря на вашите изисквания.

