2013-07-16 70 views
0

我想让CakeEmail工作,我得到一个“无法发送电子邮件”内部错误。cakephp 2 CakeEmail无法发送电子邮件错误

堆栈跟踪的最后一行是

CORE/Cake/Network/Email/MailTransport.php line 47 -> MailTransport->_mail(string,string,string,string,null) 

在我email.php配置我有

class EmailConfig { 

    public $default = array(
     'transport' => 'Mail', 
     'from' => '[email protected]' 
     ); 
} 

我收到我的电子邮件地址从一个形式,我试图发送电子邮件至订户。我的代码如下

$email_addr = $subs_data['Subscriber']['subscriber']; 

$Email = new CakeEmail('default'); 

$Email->emailFormat('html') 
     ->template('welcome') 
     ->to($email_addr) 
     ->subject('New Subscription') 
     ->send(); 

我已经做了一些测试,并在$ EMAIL_ADDR价值正是从表单来的,是一个有效的电子邮件地址。

我在查看/电子邮件模板/ HTML/welcome.ctp,就目前而言仅仅是一个非常基本的消息

综观MailTransport.php堆栈跟踪和线路47我已经找到了错误出现与“到”电子邮件地址相关。虽然我看不出它有什么问题。我看了很多例子,据我所知我没有做错任何事情。

我将不胜感激任何帮助,因此我可以完成此应用程序。

亲切的问候

理查德

+0

它输出什么? PR($ EMAIL_ADDR); –

+0

您是否将电子邮件库加载到您的控制器或AppController /? App :: uses('CakeEmail','Network/Email'); – Fury

回答

1

您必须EmailConfig添加更多配置。

看我的代码:

class EmailConfig {  
    public $fast = array( 
     'transport' => 'Smtp',  
     'from' => array('[email protected]' => 'Test Mail name sender'),  
     'host' => 'ssl://smtp.gmail.com',  
     'port' => 465,  
     'username' => '[email protected]',  
     'password' => 'password');  
} 

并在控制器:

CakeEmail::deliver('[email protected]', 'Subject', 'Content'); 

这就是它!

+0

总是您可以从$ fast变量中删除'from',并添加到第4个参数中的CakeEmail :: deliver中,如数组 – kicaj

+0

您不一定需要SMTP。但是 - 在大多数情况下 - 建议使用它。 'mail()'周围的普通PHP环境可能没有正确配置。这将在所有情况下都有效。我赞成这个答案。 – mark

+0

我的PHP邮件环境工作正常,我可以通过简单的PHP脚本从命令行发送邮件。我不想或需要使用smtp。因此,我不需要配置中的额外项目。 – rickl

0

与email.php以下配置尝试

public $default = array(
    'transport' => 'Mail', 
    'from' => '[email protected]', 
    'charset' => 'utf-8', 
    'headerCharset' => 'utf-8' 
); 
0

你加载电子邮件库到您的控制器或AppController的/?

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

如果您确定您的电子邮件配置是正确的,那么请尝试在现场测试它是否有效。
并尝试使用smtp配置您的电子邮件,以确保您的电子邮件发送正确。

public $smtp = array(

       'transport' => 'Smtp', 
     'from' => array('[email protected]' => 'Company name'), 
     'host' => 'mail.test.com', 
     'port' => 25, 
     'timeout' => 30, 
     'username' => 'email', 
     'password' => 'password', 
     'client' => null, 
     'log' => false, 

    ); 


和一套模板看看我的回答here

Email template not using themed version

+0

如果显示消息,则会加载该类 –

相关问题