Как отправить электронное письмо с помощью CodeIgniter
Электронная почта очень важна в веб-приложениях. Когда пользователь регистрируется, мы можем захотеть отправить ему электронное письмо, чтобы подтвердить его адрес электронной почты и позволить пользователю подтвердить подписку. Мы также используем электронную почту для сброса забытых паролей, отправки счетов и квитанций клиентам и т. д. CodeIgniter позволяет нам очень легко отправлять электронные письма из нашего приложения, используя различные варианты.
CodeIgniter имеет встроенную библиотеку электронной почты, с которой мы можем работать при отправке электронных писем.
Конфигурация электронной почты CodeIgniter
Нам нужно иметь центральное место, где мы могли бы управлять настройками электронной почты. 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' => '[email protected]',
'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' указывает протокол, который вы хотите использовать при отправке электронной почты. Это могут быть настройки smtp Gmail или настройки smtp вашего хоста.
- 'smtp_host' => 'smtp.example.com' указывает хост smtp. Например, если вы хотите использовать Gmail, у вас будет что-то вроде smtp.gmail.com.
- 'smtp_port' => 465, открытый порт на указанном хосте smtp, настроенный для почты smtp.
- 'smtp_user' => '[email protected]' — адрес электронной почты, который будет использоваться в качестве отправителя при отправке электронных писем. Это должен быть действительный адрес электронной почты, существующий на сервере.
- 'smtp_pass' => '12345!', пароль к указанному адресу электронной почты smtp-пользователя.
- 'smtp_crypto' => 'ssl' указывает используемый метод шифрования, например SSL, TLS и т. д.
- 'тип электронной почты' => 'текст', устанавливает тип используемой почты. Это может быть обычный текст или HTML в зависимости от ваших потребностей.
- 'smtp_timeout' => '4' указывает время в секундах, которое должно пройти при попытке подключения к хосту, прежде чем будет выдано исключение тайм-аута.
- 'charset' => 'iso-8859-1' определяет набор символов, который будет использоваться при отправке электронных писем.
- 'wordwrap' => TRUE установлено в TRUE, тогда перенос слов включен. Если установлено значение FALSE, перенос слов не включен.
Внимание: для отправки электронных писем в работу необходимо указать действительные параметры конфигурации. Фиктивные параметры не смогут отправлять электронные письма.
Просмотр электронной почты CodeIgniter
В этом разделе мы создадим представление, которое будет отправлять электронное письмо получателю.
Создайте новый адрес электронной почты в каталоге application/views.
Создайте новый файл 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-форма, которая принимает электронное письмо, тему и сообщение, а затем передает параметры в маршрут электронной почты.
Контроллер электронной почты CodeIgniter
Давайте теперь создадим контроллер, который будет обрабатывать отправку электронной почты.
Создайте новый файл 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 расширяет CI_Controller {…} определяет наш контроллер электронной почты, который расширяет родительский контроллер CodeIgniter.
- public function __construct() {…} определяет дочерний конструктор, который вызывает метод родительского конструктора.
- публичная функция index() {…} определяет метод индекса, который отображает контактную форму
- функция send() {…} определяет метод, который отправляет электронное письмо
- $this->load->config('электронная почта'); загружает настройки конфигурации электронной почты
- $this->load->library('электронная почта'); загружает библиотеку электронной почты
- $from = $this->config->item('smtp_user'); получает идентификатор отправителя из файла конфигурации электронной почты, который мы определили.
- $to = $this->input->post('to'); получает значение из отправленной формы
- $subject = $this->input->post('subject'); устанавливает адрес электронной почты, отправленный из формы
- $message = $this->input->post('сообщение'); устанавливает сообщение электронной почты из формы
- $this->email->set_newline("\r\n"); определяет символы новой строки для электронных писем
- $this->email->from($from); устанавливает адрес электронной почты отправителя
- $this->email->to($to); устанавливает адрес электронной почты получателя
- $this->электронная почта->тема($subject); устанавливает тему электронного письма
- $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
Вы должны увидеть следующую форму
Введите адрес электронной почты получателя, тему и сообщение электронной почты, затем нажмите «Отправить электронное письмо». Если настройки электронной почты настроены правильно, вы сможете увидеть успешное сообщение.
Резюме
Встроенная библиотека электронной почты позволяет нам легко отправлять электронные письма с минимальным количеством кода. Библиотека также очень гибкая в том смысле, что вы можете настроить ее в соответствии со своими требованиями.

