Учебники

13) Отправить письмо с помощью CodeIgniter

Электронная почта очень важна в веб-приложениях. Когда пользователь регистрируется, мы можем отправить ему электронное письмо, чтобы подтвердить его адрес электронной почты и позволить пользователю подтвердить подписку. Мы также используем электронную почту для сброса забытых паролей, отправки счетов и квитанций клиентам и т. Д. CodeIgniter позволяет нам очень просто отправлять электронные письма из нашего приложения, используя различные варианты.

CodeIgniter имеет встроенную почтовую библиотеку, с которой мы можем работать при отправке электронных писем.

В этом уроке вы узнаете

CodeIgniter Email Configuration

Нам нужно центральное место, где мы можем управлять настройками электронной почты. 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', указывает протокол, который вы хотите использовать при отправке электронной почты. Это могут быть настройки SMTP в Gmail или настройки 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, тогда включается перенос слов. Если установлено значение ЛОЖЬ, перенос слов не включен

Примечание : для отправки электронной почты на работу, вы должны предоставить действительные параметры конфигурации. Фиктивные параметры не смогут отправлять электронные письма.

CodeIgniter Просмотр электронной почты

В этом разделе мы создадим представление, которое отправит электронное письмо получателю.

Создайте новый каталог электронной почты в приложении / 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 Email Controller

Давайте теперь создадим контроллер, который будет обрабатывать отправку электронной почты

Создайте новый файл EmailController.php в приложении / 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 {…} определяет наш контроллер электронной почты, который расширяет родительский контроллер CodeIgniter.
  • public function __construct () {…} определяет дочерний конструктор, который вызывает метод родительского конструктора.
  • public function index () {…} определяет метод index, который отображает контактную форму
  • Функция send () {…} определяет метод, который отправляет электронную почту
    • $ This-> load-> конфигурации ( 'электронная почта'); загружает настройки конфигурации электронной почты
    • $ This-> load-> библиотека ( 'электронная почта'); загружает библиотеку электронной почты
    • $ 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 ( "\ г \ п"); определяет символы новой строки для писем
    • $ This-> email-> от ($ от); устанавливает адрес электронной почты отправителя
    • $ This-> email-> к ($ к); устанавливает адрес электронной почты получателя
    • $ This-> email-> предмет ($ субъект); устанавливает тему письма
    • $ This-> email-> сообщение ($ сообщение); устанавливает сообщение электронной почты
    • if ($ this-> email-> send ()) {…} пытается отправить электронное письмо. Если электронное письмо было успешно отправлено, то сообщение «Ваше электронное письмо было успешно отправлено», в противном случае будет напечатана отладочная информация о том, что могло пойти не так.

Давайте теперь определим почтовые маршруты

Маршруты электронной почты

Добавьте следующие маршруты в application / config / rout.php

$route['send-email'] = 'email controller';
$route['email'] = 'email controller/send';

Теперь мы можем загрузить форму контактов в веб-браузере

Давайте запустим встроенный PHP-сервер

Откройте терминал / командную строку и перейдите к корню вашего приложения. В моем случае рут находится на диске C: \ Sites \ ci-app

cd C:\Sites\ci-app

запустить сервер с помощью следующей команды

php -S localhost:3000

Загрузите следующий URL в ваш веб-браузер

HTTP: // локальный: 3000 / посыл по электронной почте

Вы должны увидеть следующую форму

Введите адрес электронной почты получателя, тему и сообщение электронной почты, затем нажмите «Отправить электронную почту». Если настройки вашей электронной почты настроены правильно, вы сможете увидеть успешное сообщение.

Резюме

Встроенная библиотека электронной почты позволяет нам легко отправлять электронные письма с минимальным кодом. Библиотека также очень гибкая в том смысле, что вы можете настроить ее в соответствии с вашими требованиями.