Я настраиваю сервер Apache (2.2.14) в Windows и заимствую идеи из существующей конфигурации XAMPP. Сейчас я пытаюсь настроить электронную почту для PHP (5.3.1). (Он должен иметь возможность обрабатывать вложения, как и сервер XAMPP.)
Я заметил, что XAMPP поставляется с поддельный sendmail для Windows, но некоторые вещи в конфигурации для меня не имеют смысла.
Вот пара строк из XAMPP php.ini
:
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
Это странно, потому что:
sendmail_path
закомментировано по умолчаниюЯ задавался вопросом, если sendmail.exe
даже нужно. Итак, на моем собственном сервере Apache, на котором нет sendmail.exe
, Я редактировал php.ini
добавить правильную информацию для SMTP
, smtp_port
, и sendmail_from
. С этим он мог отправлять почту! Но это очень медленно.
Затем я вернулся на сервер XAMPP и переименовал sendmail
каталог, надеясь отключить sendmail. Это сработало - мой PHP-скрипт утверждал, что отправил, но ничего не произошло.
Так что я очень запутался.
sendmail_path
закомментировано, но, по-видимому, все еще использует указанную программу. Откуда это знать?sendmail_path
, но может как-то отправлять почту и без него. Как оно это делает?Что мне действительно нужно сделать, чтобы настроить сервер Apache для отправки электронной почты?
После дальнейшего поиска и тестирования выяснилось, что:
В Windows функция PHP mail () не обязательно должна передавать электронную почту другой программе на том же компьютере; он может подключаться к почтовому серверу самостоятельно
Однако это неэффективно и медленно.
Настройка поддельный sendmail на серверной машине и указывая php.ini
с sendmail_path
директива делает отправку электронной почты намного быстрее. Лично я представляю sendmail.exe
пережевывая данные на приятные, удобоваримые кусочки и плюясь в рот почтовому серверу, как птица-мать кормит своего детеныша. Мммм! Но может я сумасшедший.
Если вы положите sendmail.exe
в C:\usr\bin
, это позволяет некоторым программам, которые предполагается запускать в ОС на базе Unix, запускать в Windows
Вот это некоторая информация в руководстве по PHP это помогло мне решить эту проблему.
Примечание. Реализация mail () в Windows во многом отличается от реализации в Unix. Во-первых, он не использует локальный двоичный файл для составления сообщений, а работает только с прямыми сокетами, что означает, что MTA необходим для прослушивания сетевого сокета (который может быть как на локальном, так и на удаленном компьютере).
И...
Примечание: стоит отметить, что функция mail () не подходит для больших объемов электронной почты в цикле. Эта функция открывает и закрывает сокет SMTP для каждого письма, что не очень эффективно. Для отправки больших объемов электронной почты см. Пакеты »PEAR :: Mail и» PEAR :: Mail_Queue.
На самом деле Apache не участвует ни в какой конфигурации отправки электронной почты. Это полностью обрабатывается PHP и, в данном случае, локальным MTA. MTA почти всегда будет Sendmail или Postfix. Конфигурация для этого находится в файле php.ini в разделе [mail function], который называется sendmail_path.