2013-06-21 138 views
0

我想在我的CakePHP應用程序中使用Emailing System(CakeEmail Class)。當新用戶在我的網站註冊時,會向他/她發送一封電子郵件,告知您「已保存,現在按照此鏈接登錄」。我添加了這個功能,但是它沒有發送任何郵件或者顯示代碼有什麼問題。這是代碼: p在CakePHP中發送電子郵件

App::uses('AppController','Controller','CakeEmail','Network/Email');p 
. 
. 
. 
public function signUp(){ 
    if($this->request->is('post')){ 
     $this->User->create(); 
     if($this->User->save($this->request->data)){ 
      $Email=new CakeEmail('default'); 
      $Email->from(array('[email protected]'=>'My Site')) 
       ->to($this->request->data['User']['username']) 
       ->subject('Welcome to Beauty Class') 
       ->send('My message'); 
      $this->Session->setFlash(__('You have been saved and an email has just been sent to you, check your mail-box and follow the given link to login')); 
      $this->redirect(); 
     }else{ 
      $this->Session->setFlash(__('The user could not be saved. Please, try again.')); 
     } 
    } 
    $this->set('title_for_layout','Sign Up'); 
} 
+0

爲了執行電子郵件和setFlash語句,您是否驗證過所有if條件都是真的?你收到什麼輸出? –

+0

'$ this-> request-> data ['User'] ['username']'是一個有效的電子郵件地址?試着抓住電子郵件,看看是否有任何輸出。 – Nunser

+3

App :: uses() - 按照記錄 - 只有兩個參數。你需要幾個來覆蓋你的課程! – mark

回答

1

變化

App::uses('AppController','Controller','CakeEmail','Network/Email');p 
. 
. 
. 
public function signUp(){ # ... the rest of your code 

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

public function signUp(){ # ... the rest of your code 

來源

靜態應用::使用(字符串$類,串$包)

類是延遲加載在CakePHP中,自動裝卸但是之前可以找到你的類,你需要告訴應用程序,它可以找到這些文件。通過告訴應用程序可以在哪個包中找到類,它可以在第一次使用類時正確定位文件並加載它。

一些例子:

App::uses('PostsController', 'Controller'); 
App::uses('AuthComponent', 'Controller/Component'); 
App::uses('MyModel', 'Model'); 

所以基本上第二PARAM應該簡單地匹配核心或應用類文件的文件夾路徑。


Ps。給Mark一些學分。我沒有注意到答案已經在評論中給出。

+0

好吧,非常感謝你們倆。 @Jelmer – user2387319

+0

你給了一個具體的例子@Jelmer – user2387319

+0

@ user2387319不要忘了接受它作爲一個答案,如果它確實爲你解決它。如果其他SO用戶發現這個問題。 – Jelmer