Я думаю, здесь есть путаница.
SMTP , Простой протокол пересылки почты , действительно является базовым протоколом, используемым для электронной почты. Все существующие решения, библиотеки или сервисы основаны на этом.
CodeIgniter предоставляет нам полезный класс библиотеки Mail , который в основном является объектно-ориентированной оболочкой, предназначенной для упрощения отправки почты из вашего PHP-приложения. Например, это позволяет вам сделать это:
$this->load->library('email');
$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
Это довольно просто и приятно читать.
Теперь этот класс можно настроить по-разному. И я согласен, что документация плохо объясняет это. И я думаю, что то, что могло вас смущать, так это предложение:
Multiple Protocols: Mail, Sendmail, and SMTP
, который в таблице конфигурации имеет вид:
протокол : mail
, sendmail
или smtp
Протокол отправки почты.
Это будет использоваться так:
$config = ['protocol' => 'sendmail'];
$this->email->initialize($config);
Что означает это значение?
почта
Значением по умолчанию является mail
.
Это означает, что библиотека CodeIgniter будет использовать внутреннюю mail()
функцию PHP для попытки отправки почты.
Как это работает? Как PHP знает, как отправлять почту?
В Unix / Linux он вызывает двоичный файл sendmail
, который затем использует почту
Конфигурация для маршрутизации электронной почты. В Windows он отправляет SMTP
сервер. В обоих случаях системный администратор настраивает почтовую систему.
Благодаря этому SO ответу
В любом случае двоичный файл sendmail
будет использовать SMTP-сервер для отправки почты, как настроено администратором.
Sendmail
Второе возможное значение: sendmail
.
Использование значения sendmail
для конфигурации означает, что библиотека CodeIgniter будет напрямую использовать двоичный файл sendmail
без использования функции PHP mail()
.
Путь к двоичному файлу можно настроить с помощью параметра mailpath
(по умолчанию /usr/sbin/sendmail
).
Это означает, что это можно использовать только на платформе Linux / Unix, поскольку в Windows нет бинарного файла sendmail
.
Теперь, почему вы хотите использовать двоичный файл sendmail
напрямую, поскольку внутренняя функция PHP mail()
уже использует его (и совместима с Windows)?
Ну, для одного хост-провайдер может отключить внутреннюю функцию mail()
в вашей среде PHP Или вы можете вызвать специальный sendmail
двоичный файл, отличный от того, который используется внутренней функцией PHP.
В любом случае двоичный файл sendmail
будет использовать SMTP-сервер для отправки почты, как настроено администратором.
SMTP
Последнее возможное значение: smtp
.
Использование значения smtp
для конфигурации означает, что библиотека CodeIgniter будет напрямую подключаться к SMTP-серверу для отправки почты.
Способ выполнения соединения можно настроить с помощью соответствующих опций smtp_*
, таких как smtp_host
, smtp_user
, smtp_pass
, smtp_port
и т. Д. *
Эта опция действительно полезна, когда вы не являетесь администратором сервера (например, в среде общего хостинга) и, следовательно, не можете настроить SMTP-провайдера для сервера.
Лучше выбрать этот вариант, чем другой вариант, поскольку ваше приложение больше не будет зависеть от правильной конфигурации сервера.
Краткое описание
Основная проблема заключается в том, что в классе и документации неправильно используется термин protocol
.
SMTP - это протокол для электронной почты.
Опция mail
, sendmail
и smtp
больше похожа на конечные точки или методы отправки , то есть то, что библиотека должна использовать для отправки почты.
Надеюсь, это немного прояснит документацию.