Разница между CodeIngiter Email Protocol, sendmail, mail и SMTP? - PullRequest
0 голосов
/ 09 апреля 2019

В настоящее время я делаю презентацию в библиотеке электронной почты CodeIngiter vs External.Я не понимаю разницу между несколькими протоколами конфигурации электронной почты, кроме SMTP.Есть доступный вопрос, но он кажется запутанным, и я ценю более простой подход, указывающий на четкие различия.

Также я не могу найти в руководстве CodeIgniter ничего о нем, просто заявляет, что существует.

1 Ответ

1 голос
/ 09 апреля 2019

Я думаю, здесь есть путаница.

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 больше похожа на конечные точки или методы отправки , то есть то, что библиотека должна использовать для отправки почты.

Надеюсь, это немного прояснит документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...