CakePHP 2.0说电子邮件无效

时间:2014-06-15 16:56:55

标签: php cakephp cakephp-2.0

我有一个用于在CakePHP 2.0中发送电子邮件的组件。它完全正常工作,直到我把网站放在现场主机上。现在,我收到错误:

  

电子邮件无效:“admin@website.com”

显然,上面的电子邮件地址是有效的,所以我不知道为什么Cake会在这里抛出异常。请注意,无论我使用哪个电子邮件地址,都会得到相同的结果。

我使用的组件功能:

public function send($to, $subject, $body = null, $view = 'default', $vars = array(), $layout = 'layout'){
    try{
        $Email = new CakeEmail();
        $Email->config('default'); 
        $Email->template($view, $layout)->viewVars($vars);
        $Email->from(array(Configure::read('Site.email') => Configure::read('Site.name')));
        $Email->to($to);
        $Email->subject($subject);

        if(strlen(trim($body)) > 0){
            $Email->send($body);
        } else{
            $Email->send();
        }
    } catch(Exception $e){
        var_dump($e);
    }

}

在我的电子邮件配置文件中,我使用默认的Mail传输。

更新:我似乎遇到与person in this question完全相同的问题。基本上,我收到了错误:

  

电子邮件无效:“email@website.com”   发生内部错误。

2 个答案:

答案 0 :(得分:2)

好吧,我现在感觉有点傻了:

基本上,我意识到我没有在我的电子邮件配置中设置内容类型。在我的本地计算机上,我使用Google的电子邮件服务器发送HTML电子邮件。在生产服务器上,我使用的是常规邮件配置。不幸的是,我忘了为这种特定类型的邮件设置内容类型(而它是为Gmail配置设置的)。这里的问题是我的许多布局和基于文本的电子邮件不存在HTML电子邮件的查看文件。这似乎已经以某种形式破坏了Cake,导致它抛弃了关于​​电子邮件无效的无意义错误,即使它们是。

说实话,我偶然发现了这件事。昨天,我上传了一些代码来尝试调试问题。令我惊讶的是,我的测试代码工作正常。然后我突然意识到,在我的测试代码中,我 手动 指定默认视图和布局。即我没有使用任何自定义视图。

为了测试我的理论,我确保HTML视图和布局也存在于基于文本的电子邮件中。果然,我的电子邮件开始发送。

从那时起,我将内容类型设置为HTML,一切都按预期工作。

答案 1 :(得分:0)

一些想法

$Email->to(Sanitize::paranoid($to, array('@'));

另外,请确保 - > to()函数实际上将$ to设置为 - > to:)

否则,请按以下方式设置:

$Email->to = Sanitize::paranoid($to, array('@');
相关问题