2017-08-24 1 views
0

Je ne peux pas envoyer de courrier depuis mon site Web cakephp 3. J'ai essayé un fichier simiple testmail.php, j'ai reçu l'e-mail, mais quand j'essaie le même nom d'utilisateur et le même mot de passe que sur app.php, la connexion est expirée.Erreur: [Cake Network Exception SocketException] La connexion a expiré

Error: [Cake\Network\Exception\SocketException] Connection timed out 

Ceci est sur 1and1.com. Je suis capable d'envoyer des mails lors de l'installation sur localhost.

ce qui pourrait être mal:

Voici le error.log:

2017-08-24 14:05:09 Error: [Cake\Network\Exception\SocketException] Connection timed out 
Request URL: /contactus/ 
Referer URL: https://example.com/ 
Stack Trace: 
#0 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Mailer/Transport/SmtpTransport.php(207): Cake\Network\Socket->connect() 
#1 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Mailer/Transport/SmtpTransport.php(162): Cake\Mailer\Transport\SmtpTransport->_connect() 
#2 /homepages/30/d665828522/htdocs/app/vendor/cakephp/debug_kit/src/Mailer/Transport/DebugKitTransport.php(79): Cake\Mailer\Transport\SmtpTransport->send(Object(Cake\Mailer\Email)) 
#3 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Mailer/Email.php(1344): DebugKit\Mailer\Transport\DebugKitTransport->send(Object(Cake\Mailer\Email)) 
#4 /homepages/30/d665828522/htdocs/app/src/Controller/UsersController.php(335): Cake\Mailer\Email->send() 
#5 /homepages/30/d665828522/htdocs/app/src/Controller/UsersController.php(113): App\Controller\UsersController->_sendVerificationCode(Object(Cake\ORM\Entity)) 
#6 [internal function]: App\Controller\UsersController->ajaxRegister() 
#7 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Controller/Controller.php(435): call_user_func_array(Array, Array) 
#8 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(121): Cake\Controller\Controller->invokeAction() 
#9 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(95): Cake\Http\ActionDispatcher->_invoke(Object(App\Controller\UsersController)) 
#10 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Http/BaseApplication.php(83): Cake\Http\ActionDispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response)) 
#11 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Http\BaseApplication->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner)) 
#12 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Routing/Middleware/RoutingMiddleware.php(62): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response)) 
#13 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\RoutingMiddleware->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner)) 
#14 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Routing/Middleware/AssetMiddleware.php(88): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response)) 
#15 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\AssetMiddleware->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner)) 
#16 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Error/Middleware/ErrorHandlerMiddleware.php(81): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response)) 
#17 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Error\Middleware\ErrorHandlerMiddleware->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner)) 
#18 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Http/Runner.php(51): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response)) 
#19 /homepages/30/d665828522/htdocs/app/vendor/cakephp/cakephp/src/Http/Server.php(90): Cake\Http\Runner->run(Object(Cake\Http\MiddlewareQueue), Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response)) 
#20 /homepages/30/d665828522/htdocs/app/webroot/index.php(37): Cake\Http\Server->run() 
#21 {main} 

Répondre

-1

Pouvez-vous s'il vous plaît vérifier la configuration de votre EmailTransport personnalisé et assurez-vous que vous utilisez la configuration de votre EmailTransport personnalisée et non pas celui par défaut ?

Dans la configuration app.php EmailTransport devrait ressembler à ceci:

'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), 
     ], 
     'custom' => [ 
      'className' => 'Smtp', 
      // The following keys are used in SMTP transports 
      'host' => 'A.B.C.D', // Ip of your server 
      'port' => XX, // Port that you use: 25 or 465 or 587 
      'timeout' => 60, 
      'username' => 'MyUsername', 
      'password' => 'MyPassword', 

      'client' => null, 
      'tls' => true, 
      'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), 
     ], 
     'debug' => [ 
      'className' => 'Debug', 
      // The following keys are used in SMTP transports 
      'host' => 'A.B.C.D', // Ip of your server 
      'port' => XX, // Port that you use: 25 or 465 or 587 
      'timeout' => 60, 
      'username' => 'MyUsername', 
      'password' => 'MyPassword', 

      'client' => null, 
      'tls' => null, 
      'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), 
     ], 
     'gmail' => [ 
      'host' => 'ssl://smtp.gmail.com', 
      'port' => 465, 
      'timeout' => 30, 
      'username' => '[email protected]', 
      'password' => 'password_of_test', 
      'headers' => array(
       'X-Mailer' => 'PHP' 
      ), 
      'charset' => 'UTF8', 
      'headerCharset' => 'UTF8', 
      'className' => 'Smtp', 
      'tls' => null 
     ], 

    ], 

Et à l'intérieur de votre contrôleur envoyer votre e-mail comme ceci:

<?php 
    namespace App\Controller; 

    use Cake\Mailer\Email; 
    /* ... */ 

    private function sendResetEmail($msg, $user) { 

     $email = new Email(); 
     $email->transport('custom'); // Here we call to ou custom config 

     $email->template('YourEmailTemplate'); 
     $email->emailFormat('both'); 
     $email->from('[email protected]'); 
     $email->to($user->email, $user->username); 
     $email->subject('Reset your password'); 
     $email->viewVars(['msg' => $msg, 'username' => $user->username]); 
     try { 
      $email->send(); 
      } catch(Exception $e) { 
      throw new Exception("Exception caught with message: " . $e->getMessage().'\n'.$email->smtpError); 
      } 
    } 

Hope it helps

+0

La configuration j'ai essayé localhost fonctionne correctement lorsque je télécharge la même chose sur le serveur, cela ne fonctionne pas. – TheDevMan

+0

Peut-être que sur votre serveur vous avez un pare-feu. s'il s'agit d'un linux, essayez de faire un ping sur le serveur, et si vous répondez, essayez de vous connecter manuellement à votre serveur smtp avec telnet: "** telnet [adresse ou votre serveur] [port, 25/465 ou 587] **". Sur la fenêtre, vous pouvez vérifier la connexion avec ** putty **. – Benfarhat

+0

Comme je l'ai dit avant il n'y a pas de problème de pare-feu parce que testmail.php fonctionne très bien avec SMTP 25/465/587 tous fonctionnent. – TheDevMan