2012-01-20 3 views
0

Я очень смущен, я пытаюсь отправить электронную почту через PHP, но у меня проблемы с конкретным почтовым сервером, а с другим все работает нормально.(php) fsockopen error, но работает telnet-подключение

Когда я пытаюсь:

$smtp_conn = fsockopen('mail.onedomain.com',25,$errno,$errstr,30); 
echo $errno . '<br>' . $errstr; 

я получаю:

110 
Connection timed out 

но ...

Я Пуск> CMD и написать:

telnet mail.onedomain.com 25 

И я получаю:

220 server1.onedomain.local Microsoft ESMTP MAIL Service Ready at Sat, 21 Jan 2012 00:05:04 +0100 

Я не понимаю этого, соединение выполняется с telnet, но я не могу сделать это на PHP с теми же параметрами ... у кого-то есть идея?

Я подозреваю, что проблема связана с плохой конфигурацией почтового сервера, но ... как я могу демостратировать?

Спасибо! Карлес.

+0

Помимо ошибки вашего получают с помощью этого метода. Считаете ли вы использование функции «mail» php? Похоже, вы пытаетесь что-то слегка запутанное. –

+0

Как ручная запись команд SMTP в сокет, так и использование PHP 'mail' объективно хуже, чем использование высококачественной сторонней почтовой библиотеки, такой как [SwiftMailer] (http://swiftmailer.org/). – Charles

ответ

0

Позор этот никогда не получил ответа. Я ударился головой о кирпичную стену с точно такой же проблемой. Bash telnet работал нормально, но php fscokopen просто не удалось.

Решение: - Используйте вместо ip вместо сервера вместо ipAME.

Таким образом, вместо:

$smtp_conn = fsockopen('mail.onedomain.com',25,$errno,$errstr,30); 
echo $errno . '<br>' . $errstr; 

Использование:

$smtp_conn = fsockopen('000.000.000.000',25,$errno,$errstr,30); 
echo $errno . '<br>' . $errstr; 
Смежные вопросы