2014-01-13 57 views
2

我在Expression Engine插件(EE運行CI)內使用codeigniters電子郵件類。 由於某種原因,每次插件運行時,都會發送2封電子郵件,而不是1封。電子郵件是相同的。Codeigniter發出多個電子郵件

{exp:cdwd_emailer:questionnaire type="{segment_3}" entry_id="{segment_4}"} 

這是上面調用的函數。

public function questionnaire() { 

    $type = $this->EE->TMPL->fetch_param('type'); 
    $typeLower = str_replace("-", " ", $type); 
    $typeUpper = ucwords($typeLower); 

    print_r($type); 

    $entry_id = $this->EE->TMPL->fetch_param('entry_id'); 

    $subject = $typeUpper.' Questionnaire Submission'; 
    $fromEmail = '[email protected]'; 
    $fromName = 'Test Name'; 
    $toEmail = '[email protected]'; 

    $message = ' 
     <p>A new '.$typeLower.' has been submitted.</p> 
     <p><a href="http://www.domain.co.uk/questionnaires/view/'.$type.'/'.$entry_id.'">Please click here to view this submission</a></p> 
    '; 

    $this->EE->load->library('email'); 
    $this->EE->email->set_mailtype("html");   
    $this->EE->email->from($fromEmail, $fromName); 
    $this->EE->email->to($toEmail);  
    $this->EE->email->subject($subject); 
    $this->EE->email->message($message); 
    $this->EE->email->send(); 

} 

有誰能告訴我爲什麼?我無法弄清楚。我打印出了類型和entry_id參數的內容,以檢查每個參數中只有一個正在被收集。

謝謝

回答

2

我認爲你必須在發送郵件後清除你的郵件對象。 按照表達式引擎,你必須調用:

ee()->email->clear(); 

對於您的情況:

$this->EE->email->clear(); 
+0

感謝。我已經添加了它,但它仍然發送兩封電子郵件。 – user2889310

+0

在電子郵件發送代碼後停止執行('exit();')。然後檢查你的郵件。 –

+0

當我添加退出()它仍然發送兩封電子郵件,但也顯示一個空白頁面,而不是模板。 – user2889310