2016-05-07 12 views
0

以下のコードで私の電子メールはdevモードで問題なく送信されます。これで、CakePHPエラーが発生するまで、ページをロードして読み込む電子メールを送信するアクションの1つをトリガーしようとすると、アプリケーションをプロダクションモードにしました。データはまだデータベースに格納されます。CakePHP 3 - プロダクションで電子メールを送信しない

'EmailTransport' => [ 
    'default' => [ 
     'className' => 'Mail', 
     // The following keys are used in SMTP transports 
     'host' => 'localhost', 
     'port' => 25, 
     'timeout' => 30, 
     'username' => 'user', 
     'password' => 'secret', 
     'client' => null, 
     'tls' => null, 
     'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), 
    ], 
    'mailjet' => [ 
     'host' => 'in-v3.mailjet.com', 
     'port' => 587, 
     'timeout' => 60, 
     'username' => 'removed', 
     'password' => 'removed', 
     'className' => 'Smtp' 
    ], 
], 



public function register() 
{ 
    $user = $this->Users->newEntity(); 

    if ($this->request->is('post')) { 
     $user = $this->Users->patchEntity($user, $this->request->data); 
     $user->role = 'user'; 
     $user->email_verified = '0'; 
     $user->email_token = Security::hash($user->username + microtime(), 'sha1', true); 
     $user->email_token_expires = strtotime('now'); 
     $user->email_token_expires = strtotime('+1 hour'); 

     if ($result = $this->Users->save($user)) { 
      $this->Users->lastLogin($user['id']); 
      $authUser = $this->Users->get($result->id)->toArray(); 
      $this->Auth->setUser($authUser); 

      $email = new Email(); 
      $email->template('confirm') 
        ->transport('mailjet') 
        ->emailFormat('both') 
        ->viewVars(['token' => $user->email_token]) 
        ->to($this->Auth->user('email')) 
        ->from(['removed' => 'Welcome, ' . $user->username . '!']) 
        ->subject('Please confirm your email!') 
        ->send(); 

      $this->Flash->success('You have successfully registered. Check your email to confirm email.'); 
      return $this->redirect(['action' => 'profile']); 
     } else { 
      $this->Flash->error('The user could not be saved. Please, try again.'); 
     } 
    } 
    $this->set(compact('user', 'userEmail', 'token')); 
    $this->set('_serialize', ['user']); 
} 

何が可能でしょうか?

エラー:私はこのエラーを得た

Connection timed out 
Cake\Network\Exception\SocketException 
+1

CakePHPエラーが発生するまで_loads_何が表示されますか?エラーログには何が書いてありますか? – Sevvlor

+0

内部エラーが発生しました エラー:内部エラーが発生しました。 – user3617311

+0

接続がタイムアウトしました Cake \ Network \ Exception \ SocketException – user3617311

答えて

0

前回、SMTPアドレスが私の本番サーバーでブロックされました。

smtpアドレスをホワイトリストに登録した後は、すべて問題ありませんでした。

関連する問題