Отправка электронного письма SMTP IIS7.5 через php сайт

После того, как моя компания решила изменить веб-сайт, который мы переключили от старого сайта ASP.NET до нового веб-сайта, созданного в Drupal(php). Сайт работает локально на IIS7.5, и у нас также есть виртуальный сервер SMTP на порте 25.

Проблема состоит в том, что электронное письмо не может быть послано в новом веб-сайте (старый сайт посылает электронное письмо. Я не знаю точно как). Проблемой не является Drupal, связанный, потому что даже с самым простым Сценарием PHP почта не может быть отправлена.

Сервис SMTP, кажется, работает на порте TCP 25 (сверился с командой netstat), но когда я пробую

telnet localhost 25

Я получаю это сообщение:

Could not open connection to the host, on port 25: Connect failed 

То сообщение об ошибке было тем же, когда я работаю telnet 127.0..0.1 25 и telnet MERCURY 25

Я создал новый сервер VSMTP на другом порте (28) и также настроил утвержденное реле и некоторые другие опции.

  • Команда telnet localhost 28 отдает пустую страницу (после того, как, нажимая любую кнопку я возвращусь к началу),
  • Команда telnet 127.0.0.1 28 отдает пустую страницу также, но
  • Когда я пробую 'telnet MERCURY 28 ** наконец сообщение, я ожидал

    220 predrag Microsoft ESMTP MAIL Service, Version: 7.5.7600.16601 ready at  Fri, 3 Oct 2014 10:29:01 +0200 
    

Что происходит здесь? Каково различие между этими командами telnet? Какова установка, которую я должен сделать для своего файла PHP.Ini, таким образом, я могу послать электронное письмо с php веб-сайтом? Я попробовал много различных вариантов, но ни один из них не работает.

Также из конфигурации у нас есть антивирус McAfee, брандмауэр Windows с открытыми портами, php версия 5.2, Windows Server 2008 R2 и моим именем компьютера является МЕРКУРИЙ.

0
задан 3 October 2014 в 12:59
2 ответа

Возможно, конфигурация SMTP в вашем PHP.INI неверна. Проверь это. И убедитесь, что вы редактируете файл, который загружает IIS. Иногда это может сбивать с толку.

ОДНАКО - Если вы можете немного изменить код ...

Я обнаружил, что отправлять транзакционные сообщения с моих веб-сайтов намного проще с помощью веб-службы, такой как Postmark , Amazon SES или SendGrid . Вам не нужно обезьянничать с портом 25 или брандмауэрами. Ваши блоки разработки и тестирования могут использовать тот же код и службу, что и ваши производственные системы. И на любом из серверов меньше нужно настраивать - ни SMTP-сервера, ни дополнительных портов.

Ох. И я упоминал, что вам вообще не нужен доступ к порту 25 (или любому SMTP)? Вы можете использовать одну из веб-служб через обычный HTTPS для отправки почты; как и любой другой веб-сервис.

Просто убедитесь, что вы используете разные ключи API для ваших систем разработки, тестирования и производства. И не проверяйте ключи API или пароли в системе управления версиями.

0
ответ дан 5 December 2019 в 13:10

Для службы, не работающей на порту 25, может быть либо настроена, но на самом деле не запущена, либо что-то (антивирус или локальный брандмауэр?) препятствовало ее доступу на порт 25 (здесь у нас есть McAfee VirusScan, и одна из его возможностей на самом деле блокирует незарегистрированные приложения для подключения к чему-либо на порту 25....). У вас есть антивирус или другое программное обеспечение безопасности, установленное локально? Пытались ли вы перезагрузить (либо SMTP-сервер, либо саму машину)? Проверили ли вы журнал запуска службы SMTP (при настройке на 25-м порту) на наличие ошибок при запуске?

Для службы, работающей только с MERCURY (имя компьютера) на 28-м порту, а не с 127.0.0.1, похоже, что служба привязана только к сетевому интерфейсу, а не к обратному шлейфу. Это должно быть изменено в настройке службы SMTP, но если вы не найдете для этого никакой возможности, вы можете просто настроить PHP на использование MERCURY вместо 127.0.0.1 в качестве сервера (хотя, если сервер предназначен только для локального использования, гораздо лучше было бы привязать его только к интерфейсу обратного шлейфа, так чтобы он не мог быть доступен из сети - во избежание обнаружения неиспользуемого сервиса, как правило, рекомендуется в качестве хорошей практики, чтобы избежать проблем безопасности). Вы добавили 127.0.0.1 в список доступа? (Контрольная точка №15 здесь: http://www.vsysad.com/2012/04/setup-and-configure-smtp-server-on-windows-server-2008-r2/)

0
ответ дан 5 December 2019 в 13:10

Теги

Похожие вопросы