Я перепробовал все и посмотрел везде (по крайней мере, я так думаю!), Но не могу найти, что я делаю неправильно. Я убежден, что это что-то довольно глупое, что я упустил из виду.
Я пытаюсь отправлять электронные письма из приложения PHP, установленного на виртуальной машине Windows 7. Хост запускает VMWare с NAT & переадресация портов на каждую из ее виртуальных машин.
Рассматриваемая виртуальная машина имеет собственный IP-адрес внутри подсети хоста.
Он запускает WAMP с Apache / PHP / MySQL.
Чтобы обратиться к своему веб-серверу из глобальной сети, используется IP-адрес хоста и добавляется определенный порт, который перенаправляет на порт 80 виртуальной машины.
По разным причинам, которые я не буду здесь обсуждать, я должен использовать функцию PHP mail (). Я хорошо знаю, что эта функция не является оптимальной и не лучшим решением, но я вынужден использовать ее в данный момент.
Хост имеет доступ к уже существующему (и неизменяемому, у меня на него нет прав) SMTP-серверу с именем «mail», порт 25. Поэтому я настроил конфигурацию PHP виртуальной машины следующим образом:
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = mail
; http://php.net/smtp-port
smtp_port = 25
Затем я настроил NAT на хосте Vmware так, чтобы 25 портов хост-машины перенаправляли на 25 портов виртуальной машины. (ни одна другая виртуальная машина в данный момент не нуждается, и у меня ограниченный контроль над архитектурой сети VMware)
Пользователь Blaatpraat напомнил мне, что в этом случае переадресация портов не требуется. Удалена конфигурация NAT.
К сожалению, не повезло.
Я получаю эту ошибку, когда пытаюсь отправить электронное письмо с виртуальной машины.
Warning: mail() [function.mail]: Failed to connect to mailserver at "mail" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in F:\wamp\www\mailtest.php on line 4
Я должен уточнить, что виртуальная машина может нормально пинговать «почтовый» сервер.
Эта же функция прекрасно работает, если я попробую ее напрямую с хост-машины.
Есть кое-что, что я должен ошибаться в переадресации портов, но я не уверен, что.
Кто-нибудь может это увидеть? Можно ли вообще сделать такую вещь? По сути, я просто пытаюсь получить доступ и использовать существующий SMTP-сервер в глобальной сети, доступной с хоста, внутри виртуальной машины.
Заранее большое спасибо за вашу помощь
Задача ещё не решена.
Других решений пока нет …