2012-06-26 4 views
2

Я пытаюсь отправить по электронной почте в PHP с помощью PEAR почты пакет и SMTP, но я получаю ошибку SMTP: Failed to connect socket: Connection RefusedSMTP: Не удалось подключиться сокет: Подключение Отказался

Я не знаю ничего о том, как SMTP работы, так что несите меня.

Вот мой код:

$recipients = $_SESSION['email']; 
$headers["From"] = "[email protected]"; 
$headers["To"] = "[email protected]"; 
$headers["Subject"] = 'Subject Text!'; 
$mailmsg = $_SESSION['body']; 

/* SMTP server name, port, user/password */ 
$smtpinfo["host"] = "mail.example.com"; 
$smtpinfo["port"] = "587"; 
$smtpinfo["auth"] = true; 
$smtpinfo["username"] = $email_user; 
$smtpinfo["password"] = $email_pass; 
/* Create the mail object using the Mail::factory method */ 
$mail_object =& Mail::factory("smtp", $smtpinfo); 
/* Ok send mail */ 
$send = $mail_object->send($recipients, $headers, $mailmsg); 
if (PEAR::isError($send)) { 
    echo '<p>Error: ' . $send->getMessage() . '</p>'; 
} else { 
    header('Location: ../../emailed.php'); 
} 

То, что я знаю:

Домен Hostgator, и обработчик электронной почты Кейро Connect.

Я не уверен, какой порт пройти. Я посмотрел на услуги, и это говорит о том, что прослушивание IP-адреса являются:

  • SMTP: Все адреса: 25, Все адреса: 587
  • Secure SMTP: Все адреса: 465
  • SMTP Представление: Все адреса: 587 * эта служба отключена, хотя

Я также отметил, что SMTP доставки устанавливается для доставки непосредственно с помощью DNS MX записей. Я не знаю, что это значит.

Что я делаю неправильно? Что я должен искать, чтобы я мог получить все параметры в порядке? Любая помощь будет принята с благодарностью.

+0

Это больше проблема с сервером, чем проблема с кодировкой. Удаленный хост предотвращает соединение. Может быть лучше обслуживать ServerFault –

ответ

3

Просто потому, что вы слушаете порт, это не значит, что вы можете получить к нему доступ. Брандмауэр как в системе, так и в восходящем встроенном устройстве может блокировать ее.

С вашей локальной машины, на которой вы запускаете сценарий, выполните telnet mail.example.com 587 и вас привезли в приглашение?

+0

Запрос: Попытка: XXX.XX.X.XXX ... Подключен к waiter.example.com. Символом Escape является «^]». 220 waiter.example.com Kerio Connect 7.4.1 ESMTP ready – atb

+0

Хорошо, отлично! Это означает, что вы можете установить соединение с сервером. Далее, '$ email_user' включает @ domain.com? –

+0

Нет, просто имя пользователя перед @ domain.com – atb

0

Я сталкивался с таким вопросом перед .. И съел мои часы, чтобы решить ...
Попробуйте скрипт на сервере также .. Несколько раз для некоторых SMTP-хостов, Вы не можете отправлять сообщения электронной почты с локального компьютера.
Я добавляю ответ (или предложение) слишком поздно .. Но это может помочь кому-то ..

0

Если у вас нет сертификата SSL я предлагаю использовать порт 25. После того, как я получаю SSL я буду меняющийся порт конфигурации до 465. Почему вы используете этот номер порта? Я не думаю, что это соответствует хост-гигантам. Просмотрите эту страницу от hostgator. http://support.hostgator.com/articles/email-connection-settings

Смежные вопросы