Я использую 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('info@olvi.cz' => 'My Site'), 'host' => 'smtp.savana.cz', 'port' => 25, 'timeout' => 30, 'username' => 'info@olvi.cz', '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('info@olvi.cz' => $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 действительно глубоко в этой проблеме.
спасибо
Возможные причины:
Имеет ли сервер, на котором выполняется работа, спам-блок на его IP-адресах? Скорее всего, сервер SMTP не разрешает подключение с вашего сервера хостинга. Таким образом, ошибка CONNECTION REFUSED
. Это не то, что на сервере, на котором вы запускаете код, но на сервере, к которому вы пытаетесь войти.
Учетные данные SMTP неверны. Может быть, чего-то не хватает. Попробуйте подключиться с помощью этих учетных данных из другого места, чтобы узнать, действительно ли вы можете подключиться.
Являются ли учетные данные SMTP для того же хоста, из которого вы работаете. Возможно, хост не разрешает исходящее подключение к SMTP для предотвращения использования своих серверов в качестве спам-отправляющей машины.
Возможные решения
Если ни один из возможных причин не является виновником, может быть, возникла проблема с конфигурацией. У вас есть следующее:
public $default = array( 'transport' => 'Smtp', 'from' => array('info@olvi.cz' => 'My Site'), 'host' => 'smtp.savana.cz', 'port' => 25, 'timeout' => 30, 'username' => 'info@olvi.cz', 'password' => '****', 'client' => null, 'log' => false, );
Попробуйте упростить его и сменить на минимальные минимумы:
public $default = array( 'transport' => 'Smtp', 'host' => 'smtp.savana.cz', 'port' => 25, 'username' => 'info@olvi.cz', 'password' => '****', );