【问题标题】:Cakephp email errorCakephp 电子邮件错误
【发布时间】:2012-06-18 14:28:58
【问题描述】:

我的控制器

App::uses('CakeEmail', 'Network/Email'); //before class begins

//function
public function contact(){

        $email = new CakeEmail();
        $email->config('smtp');
        $email->from('me@gmail.com');
        $email->to('you@gmail.com');
        $email->subject('About');
        $email->send('My message');
    }

//Email.php in config folder

class EmailConfig {

    public $smtp = array(
        'transport' => 'Smtp',
        'from' => 'me@gmail.com',
        'host' => 'smtp.gmail.com',
        'port' => 465,
        //'timeout' => 30,
        'username' => 'me@gmail.com',
        'password' => '*****',
        'client' => null,
        'log' => false,
        //'charset' => 'utf-8',
        //'headerCharset' => 'utf-8',
    ); 
}

我得到的错误是

致命错误:超过 30 秒的最大执行时间 C:\wamp\www\myproject\lib\Cake\Network\CakeSocket.php 在第 222 行

我需要改变什么?

我什至在 Views/Users/contact 中创建了视图文件。

我需要更改 View/Email 文件夹中的视图文件吗?

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    您需要在 php.ini 文件中增加 max_execution_time 变量。

    不过,您不应该超时通过 gmail 发送电子邮件。您是否正确配置了 smtp 选项?

    来自蛋糕书 http://book.cakephp.org/2.0/en/core-utility-libraries/email.html

    '您可以配置 SSL SMTP 服务器,例如 GMail。为此,请将“ssl://”放在主机的前缀中,并相应地配置端口值。示例:'

    <?php
    class EmailConfig {
        public $gmail = array(
            'host' => 'ssl://smtp.gmail.com',
            'port' => 465,
            'username' => 'my@gmail.com',
            'password' => 'secret',
            'transport' => 'Smtp'
        );
    }
    ?>
    

    【讨论】:

    • 也增加了时间,但仍然无法发送电子邮件。它给了我同样的错误。我在这里错过了什么?
    • 是的,我确实遵循了食谱中的基本步骤。如果我遵循它们,它会说无法发送电子邮件,发生内部错误。如果我使用 'ssl://smtp.gmail.com' 它说 ssl 没有配置。
    • 堆栈跟踪 CORE\Cake\Network\Email\CakeEmail.php 第 972 行 → MailTransport->send(CakeEmail) APP\Controller\UsersController.php 第 103 行 → CakeEmail->send(string) [internal函数] → UsersController->contact() CORE\Cake\Controller\Controller.php 第 485 行 → ReflectionMethod->invokeArgs(UsersController, array) CORE\Cake\Routing\Dispatcher.php 第 103 行 → Controller->invokeAction(CakeRequest) CORE \Cake\Routing\Dispatcher.php 第 85 行 → Dispatcher->_invoke(UsersController, CakeRequest, CakeResponse) APP\webroot\index.php 第 92 行 → Dispatcher->dispatch(CakeRequest, CakeResponse)
    • 这是一个堆栈跟踪错误。我在该页面上发布了所有错误。是否需要上传项目才能发送电子邮件?
    • 不只是安装并启用openssl
    【解决方案2】:

    从您的操作中删除 $email-&gt;from('me@gmail.com');,然后重试。仅在电子邮件配置中指定 From 地址。然后看看它是否有效。

    App::uses('CakeEmail', 'Network/Email'); //before class begins
    
    //function
    public function contact(){
    
            $email = new CakeEmail();
            $email->config('smtp');
            $email->to('you@gmail.com');
            $email->subject('About');
            $email->send('My message');
        }
    
    //Email.php in config folder
    
    class EmailConfig {
    
        public $smtp = array(
            'transport' => 'Smtp',
            'from' => 'me@gmail.com',
            'host' => 'ssl://smtp.gmail.com',
            'port' => 465,
            'timeout' => 60,
            'username' => 'me@gmail.com',
            'password' => '*****',
            'client' => null,
            'log' => false,
            //'charset' => 'utf-8',
            //'headerCharset' => 'utf-8',
        ); 
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-30
      • 2012-01-04
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 2021-08-10
      • 2011-05-08
      • 1970-01-01
      相关资源
      最近更新 更多