如何解决此错误:传递给Zend_Mail_Message :: __ construct()的参数1必须是数组类型,没有给出

时间:2016-09-07 07:12:51

标签: php zend-framework zend-mail

我在控制器中的代码: `

public function filetransport()
    {
        set_time_limit(0);       
        $message = new Zend_Mail_Message();

        $message->addTo('matthew@zend.com')
        ->addFrom('ralph.schindler@zend.com')
        ->setSubject('Greetings and Salutations!')
        ->setBody("Sorry, I'm going to be late today!");

        // Setup File transport
        $transport = new Zend_Mail_Transport_File();
        $transport->setOptions(array(
                'path'              => 'data/mail/',
                'callback'  => function (Zend_Mail_Transport_File $transport) {
                return 'Message_' . microtime(true) . '_' . mt_rand() . '.txt';
        },
        ));

        $transport->send($message);
    }

在创建Zend_Mail_Message实例时,它会抛出错误。错误是

Catchable fatal error: Argument 1 passed to Zend_Mail_Message::__construct()
must be of the type array, none given,
called in C:\xampp\htdocs\Zend-Mailer\application\controllers\IndexController.php on line 102
and defined in C:\xampp\htdocs\Zend-Mailer\library\Zend\Mail\Message.php on line 57

如果您对此有所了解,请告诉我.....!

1 个答案:

答案 0 :(得分:0)

根据Zend documentation Zend_Mail_Message接受一个参数作为参数。您没有传递任何参数。这就是你得到这个错误的原因。

  

__ construct(array $ params)

     

除了Zend_Mail_Part :: __ construct()的参数之外   构造函数支持:

     
      
  • 具有原始邮件内容的文件的文件名或文件句柄
  •   
  • flags数组包含消息标志,忽略键,使用Zend_Mail_Storage中定义的常量   Inherited_from \ Zend_Mail_Part :: __ construct()
  •   

来自Zend_Mail_Part docs

  

Zend_Mail_Part支持不同的内容来源。可能   参数是:

     
      
  • 处理Zend_Mail_Storage_Abstract的一个实例,用于延迟提取
  •   
  • 处理程序的消息ID号
  •   
  • 原始内容,标题和正文为字符串
  •   
  • 标题标题为数组(名称=>值)或字符串,如果找到内容部分,则将其用作顶线
  •   
  • noToplines忽略在param'标题'
  • 中的标题后找到的内容   
  • 内容内容为字符串
  •   

这意味着,正如错误所说,你错过了构造函数中的params数组。