Проблемы с CakeEmail на сервере

Я использую cakeEmail для простой формы, и на localhost он отлично работал, но на сервере (хостинг). Он показывает мне эту ошибку:

CONNECTION REFUSED
Error: An Internal Error Has Occurred.
Stack Trace

CORE/Cake/Network/Email/SmtpTransport.php line 101 → CakeSocket->connect()
CORE/Cake/Network/Email/SmtpTransport.php line 61 → SmtpTransport->_connect()
CORE/Cake/Network/Email/CakeEmail.php line 1124 → SmtpTransport->send(CakeEmail)
APP/Controller/ProductsController.php line 26 → CakeEmail->send(string)
[internal function] → ProductsController->email()
CORE/Cake/Controller/Controller.php line 490 → ReflectionMethod->invokeArgs(ProductsController, array)
CORE/Cake/Routing/Dispatcher.php line 187 → Controller->invokeAction(CakeRequest)
CORE/Cake/Routing/Dispatcher.php line 162 → Dispatcher->_invoke(ProductsController, CakeRequest, CakeResponse)
APP/webroot/index.php line 111 → Dispatcher->dispatch(CakeRequest, CakeResponse)

Я не знаю, где проблема.

my Config/email.php:

public $default = array(
        'transport' => 'Smtp',
        'from' => array('[email protected]' => 'My Site'),
        'host' => 'smtp.savana.cz',
        'port' => 25,
        'timeout' => 30,
        'username' => '[email protected]',
        'password' => '****',
        'client' => null,
        'log' => false,
);

Мои продуктыController.php:

public function email(){
    App::uses('CakeEmail', 'Network/Email');
    if ($this->request->is('post')) {
        $email = new CakeEmail('default');
        $email->from(array('[email protected]' => $this->request->data['Email']['name']));
        $email->to($this->request->data['Email']['sender']);
        $email->subject($this->request->data['Email']['name']);
        $email->send($this->request->data['Email']['message']);
        $this->Session->setFlash(__('Zpráva byla odeslána.'));
    }
}

и просмотрите email.ctp:

echo $this->Form->create('Email');
echo $this->Form->input('name',array('label' => 'Jméno', 'required' => 'required'));
echo $this->Form->input('sender',array('type' => 'email','label' => 'Váš e-mail', 'required' => 'required'));
echo $this->Form->input('message', array('type' => 'textarea', 'label' => 'Zpráva', 'required' => 'required'));
echo $this->Form->submit('Odeslat', array('id' => 'button', 'div' => false));
echo $this->Form->end();

Я попытался позвонить на мой хостинг-сервер, и они понятия не имеют, но говорят, что работает PHPMailer. Im новый с cakePHP, поэтому у меня возникают проблемы с перемещением его на сервер. Может ли кто-нибудь лопнуть, пожалуйста? Im действительно глубоко в этой проблеме.

Спасибо

Ответ 1

Возможные причины:

  • Имеет ли сервер, на котором выполняется работа, спам-блок на его IP-адресах? Скорее всего, сервер SMTP не разрешает подключение с вашего сервера хостинга. Таким образом, ошибка CONNECTION REFUSED. Это не то, что на сервере, на котором вы запускаете код, но на сервере, к которому вы пытаетесь войти.

  • Учетные данные SMTP неверны. Может быть, чего-то не хватает. Попробуйте подключиться с помощью этих учетных данных из другого места, чтобы узнать, действительно ли вы можете подключиться.

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

Возможные решения

Если ни одна из возможных причин не является виновником, может быть, возникла проблема с конфигурацией. У вас есть следующее:

public $default = array(
    'transport' => 'Smtp',
    'from' => array('[email protected]' => 'My Site'),
    'host' => 'smtp.savana.cz',
    'port' => 25,
    'timeout' => 30,
    'username' => '[email protected]',
    'password' => '****',
    'client' => null,
    'log' => false,
);

Попробуйте упростить его и смените на минимальные минимумы:

public $default = array(
    'transport' => 'Smtp',
    'host' => 'smtp.savana.cz',
    'port' => 25,
    'username' => '[email protected]',
    'password' => '****',
);