Почему функция mail()
PHP требует почтовой программы, такой как sendmail / postfix / etc. для отправки писем?
Я прошу, потому что отправка электронной почты является действием клиента, а не тем, что нужно для запуска сервера.
Что сложного в создании собственной PHP-почты без необходимости устанавливать sendmail / postfix / etc. которая имеет чрезмерную функциональность в качестве сервера, который может получать запросы, а не просто отправлять электронную почту в качестве клиента?
Причина в том, что функция mail()
не является MTA , а только «кодер» для реального MTA.
Почему нет? Я считаю, что было бы нецелесообразно внедрять достойную и безопасную настройку MTA с использованием только PHP.
EDIT: Что именно делает MTA?
Скорее всего: sendmail
существовал до PHP- mail()
, поэтому в истинном духе * nix:
Зачем повторно создавать функциональные возможности, если они уже существуют в CLI?
Причина, по которой вы хотите передать почту кому-то еще, – это то, что Mail – это сложный зверь, который лучше всего откладывается на что-то более совершенное, чтобы справиться с этим.
Простой случай – когда вы отправляете сообщение на сервер, находящийся в автономном режиме. «ОК» для того, чтобы почтовый сервер отключился, встроена логика для повторной отправки сообщений в операциях почтовых серверов. Но если вы просто открываете SMTP-сокет и запускаете протокол лая, и он терпит неудачу, вы потеряете эту возможность очередей, которую вы получаете «бесплатно» с почтовыми серверами.
Почта – это лишь одна из тех вещей, которые лучше всего делегированы тем древним системам, которые обладают всеми знаниями и деталями, закодированными для них в течение многих лет болезненного тестирования и реализации взаимодействия.
PHP не отправляет почту сам, но делегирует другую программу для отправки почты для нее.
Вы можете обойти это ограничение, используя вместо этого пакет PEAR Mail , который поддерживает SMTP.
Когда почтовый сервер отправляет (направляет) электронную почту на другой сервер, он действует как клиент и использует SMTP для пересылки электронной почты. Клиентская часть называется агентом доставки почты (MDA) и часто представляет собой отдельную часть программного обеспечения.
Эта часть учебника sendmail полезна.
Это называется «sendmail» по какой-то причине. Сети использовали его в течение десятилетий для взаимодействия. Знаете ли вы это или нет, это то, как отправляется почта. – Программой, ограниченной протоколом RFC и предназначенной для форматирования, упаковки и доставки данных … другим серверам. Он может работать как демон, сидящий на порту или из экземпляра, вызванного в cmdline. Это простой инструмент и эффективный.
-Gama Xul (* nix guy)
Попытка отправить почту с помощью чего-то другого, кроме программы отправки почты (например, клиент веб-браузера или мода на PHP), походит на попытку вырезать что-то с помощью пистолета. Там много чего происходит, и слишком много противоречивых условий могут повесить его. Он просто не был предназначен для этого и не работал бы эффективно.