2016-08-23 3 views
0

Я использую сервер 1and1 разместить мою CakePHP 3.2 приложениюSMTP не работает на 1and1

Это, как я не настроен компонент электронной почты на CakePHP

'EmailTransport' => [ 
    'default' => [ 
     'className' => 'Smtp', 
     // The following keys are used in SMTP transports 
     'host' => 'smtp.1and1.com', 
     'port' => 587, 
     'timeout' => 30, 
     'username' => '[email protected]', 
     'password' => 'password', 
     'client' => null, 
     'tls' => null, 
     'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), 
    ], 
], 

Но это не работает, и не по электронной почте получает Connection Time out после 30 секунд.

На странице конфигурации электронной почты 1and1. В нем указано

Outgoing port (TLS must be activated) 

Как включить/настроить TLS в CakePHP?

Edit 2

стек ошибок показывает SmtpTransport.php

protected function _connect() 
{ 
    $this->_generateSocket(); 
    if (!$this->_socket->connect()) {  // marked this line 
     throw new SocketException('Unable to connect to SMTP server.'); 
    } 
    $this->_smtpSend(null, '220'); 

Действие для отправки электронной почты

public function sendEmail($user_id = null, $email_id = null, $hash = null, $request = null) 
{ 
    switch($request) { 
     case 'register' : $subject = 'Account Confirmation'; 
         $message = 'You have successfully registered. Click below link to verify it http://website.com/sellers/verify/'.$email_id.'/'.$hash; 
     break; 
    } 

    $email = new Email('default'); 
    if ($email->from(['[email protected]' => 'Argo Systems']) 
      ->to((string)$email_id) 
      ->subject($subject) 
      ->send($message)) { 

     return true; 
    } else { 
     return false; 
    } 
} 

и вызова этой функции от одного контроллера на

$this->sendEmail($user->id, $user->email, $hash, 'register'); 
+0

В вашем массиве есть параметр tls, вы его не заметили? – arilia

+0

Что находится внутри параметра 'url'? Я думаю, что параметр url должен использоваться вместо других.Не знаю, перезаписывает ли url другие или наоборот – arilia

+0

arilia, см. 'Edit 2'. Я ничего не пропускаю в url вместо вызова функции изнутри того же контроллера. То же самое отлично работает с сервером localhost. Проблема возникла после загрузки загруженного приложения на сервер хостинга –

ответ

2

из manual (жирный шрифт мой)

Вы можете настроить SSL SMTP-серверов, как Gmail. Для этого поставьте префикс ssl: // в хост и соответствующим образом настройте значение порта. Вы также можете включить TLS SMTP, используя опцию Tls:

так просто установить

'tls' => true 

в массиве конфигурации и попытаться, если он работает

Редактировать

следующий this страница Я обнаружил, что вам даже не нужно использовать Smtp Транспортер

просто использовать простой Mail Transporter этот путь

'default' => [ 
     'className' => 'Mail' 
] 

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

попробуйте это!

+0

Я заметил 'tls' и уже установил' true'. Мне не хватало 'ssl: //'. Добавил его, и теперь хост подобен 'host => 'ssl: // smtp.1and1.com', но все еще не работает –

0
I used below configuration in system for mail using gmail. it work fine. you just try with your server. 

'EmailTransport' => [ 
     'default' => [ 
      'className' => 'SMTP', 
      // The following keys are used in SMTP transports 
      'host' => 'ssl://smtp.gmail.com', 
      'port' => 465, 
      'timeout' => 100, 
      'username' => '[email protected]', 
      'password' => 'exmple123', 
      'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), 
     ], 
    ], 

Check with your port and host.Hope fully it will works 

Try 

Thanks 
+0

, почему нужно задать два' className'? –

+0

не только одно имя класса, это было по ошибке :) –

+0

Вы правы. Я тоже использовал то же самое и отлично работал на своем локальном хосте. После загрузки приложения на хост 1and1 его работа не работает –

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