Проблемы с 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' => '****',
);