首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:[蛋糕\网络\异常\套接字异常]连接超时

错误:[蛋糕\网络\异常\套接字异常]连接超时
EN

Stack Overflow用户
提问于 2017-08-25 03:14:49
回答 1查看 1.8K关注 0票数 1

我无法从我的cakephp 3网站发送邮件。我尝试了一个简单的testmail.php文件,我收到了电子邮件,但当我尝试在app.php上设置相同的用户名和密码时,连接超时。

代码语言:javascript
复制
Error: [Cake\Network\Exception\SocketException] Connection timed out

这是在1and1.com上的。在本地主机上设置时,我可以发送邮件。

可能出了什么问题:

下面是error.log:

代码语言:javascript
复制
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}
EN

回答 1

Stack Overflow用户

发布于 2017-08-25 07:39:09

您能否验证您的自定义EmailTransport配置,并确保您使用的是自定义EmailTransport配置,而不是默认配置?

在App.php中,EmailTransport配置应如下所示:

代码语言:javascript
复制
'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' => 'test@gmail.com',
            'password' => 'password_of_test',
            'headers' => array(
              'X-Mailer' => 'PHP'
            ),
            'charset' => 'UTF8',
            'headerCharset' =>  'UTF8',
            'className' => 'Smtp',
            'tls' => null
        ],

    ],

在你的控制器里,像这样发送你的电子邮件:

代码语言:javascript
复制
    <?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('noreply@example.com');
        $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);
          }
    }

希望能有所帮助

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45869327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档