2013-07-16 74 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

如果顯示消息,則會加載該類 –

相關問題