Назад | Перейти на главную страницу

Как мне настроить PHP для отправки электронной почты на Apache? (Windows)

Я настраиваю сервер 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.exe даже нужно. Итак, на моем собственном сервере Apache, на котором нет sendmail.exe, Я редактировал php.ini добавить правильную информацию для SMTP, smtp_port, и sendmail_from. С этим он мог отправлять почту! Но это очень медленно.

Затем я вернулся на сервер XAMPP и переименовал sendmail каталог, надеясь отключить sendmail. Это сработало - мой PHP-скрипт утверждал, что отправил, но ничего не произошло.

Так что я очень запутался.

Что мне действительно нужно сделать, чтобы настроить сервер Apache для отправки электронной почты?

После дальнейшего поиска и тестирования выяснилось, что:

  1. В Windows функция PHP mail () не обязательно должна передавать электронную почту другой программе на том же компьютере; он может подключаться к почтовому серверу самостоятельно

  2. Однако это неэффективно и медленно.

  3. Настройка поддельный sendmail на серверной машине и указывая php.iniс sendmail_path директива делает отправку электронной почты намного быстрее. Лично я представляю sendmail.exe пережевывая данные на приятные, удобоваримые кусочки и плюясь в рот почтовому серверу, как птица-мать кормит своего детеныша. Мммм! Но может я сумасшедший.

  4. Если вы положите 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.