2013-11-02 42 views
3

我想用codeigniter圖書館發送電子郵件給我的通訊會員,我想提及每個會員在電子郵件內容中的電子郵件地址。爲此,我使用foreach loop逐一發送電子郵件。 問題是,代碼發送電子郵件給我的通訊只有一個成員(第一個成員)。我檢查了我的代碼,它從數據庫中獲取成員,並打印出所有成員。用codeigniter發送電子郵件給所有新聞通訊會員

這是我的模型:

function send_news() 
{ 
    $subscribers = $this->get_subscriber_data(); 
    foreach($subscribers as $subscriber) 
    { 
     $this->load->helper('typography'); 

     //Format email content using an HTML file 
     $data['news_Title'] = $this->input->post('news_Title'); 
     $HTML_Message = $this->load->view('admin/includes/newsletter_html_format', $data, true); 

     $config['mailtype'] = 'html'; 
     $this->email->initialize($config); 

     $this->email->from('[email protected]', 'newsletter of site.com'); 
     $this->email->to($subscriber->subscriber_Email); 
     $this->email->subject('newsletter of site.com'); 
     $this->email->message($HTML_Message); 

     return $this->email->send(); 
    } 

} 

,這是我應得的訂戶名單:

function get_subscriber_data($options = array()) 
{ 
    $query = $this->db->get('mg_newsletter'); 

    if(isset($options['subscriber_Id'])) 
     return $query->row(0); 

    return $query->result(); 
} 

當我嘗試回聲$subscriber->subscriber_Email它打印數據庫中的一個所有的電子郵件後另一個。但它不會將電子郵件發送給所有人。我究竟做錯了什麼?!

+0

注意:在你的情況下使用'BCC'會更好 –

+0

但正如我所說的,我提到了HTML文件中的訂閱者Email。它需要使用foreach循環! – Afshin

回答

1

你是「返回」 - 你的循環內,退出函數。

只需發送

+0

這是因爲我得到控制器中的返回來設置flashdata動作是否成功。我做錯了嗎?! – Afshin

+0

是的。當你說「返回」時,你退出該功能。例如,您會希望在每個循環中執行一次檢查,並在第一次失敗時退出,否則在循環外部返回它傳遞的「true」 – jmadsen

+0

謝謝。它幫助我。但是,請你編輯你的答案,並有一個例子,當失敗或者其他情況時,我將如何返回真或假? – Afshin

3

使用

​​

由於codeignitor說: 初始化所有的電子郵件變量爲空狀態。如果您在循環中運行電子郵件發送功能,則允許在循環之間重置數據。

foreach ($list as $name => $address) 
{ 
    $this->email->clear(); 

    $this->email->to($address); 
    $this->email->from('[email protected]'); 
    $this->email->subject('Here is your info '.$name); 
    $this->email->message('Hi '.$name.' Here is the info you requested.'); 
    $this->email->send(); 
} 

如果將該參數設置爲TRUE,則任何附件也將被清除。然後讓我們知道

+0

是的,我忘了使用'$ this-> email-> clear()'。但這不是我所需要的。因爲問題依然存在。 – Afshin

+0

它發送最後一封電子郵件或第一封電子郵件?你有沒有檢查過天氣,你的本性甚至會返回一個數組? –

+0

我只發送一封電子郵件。這封電子郵件正發送給我的一個通訊會員,這是第一個訂閱了通訊的會員。例如,我有13個成員,並且郵件正在發送給身份證號爲「1」的用戶。 – Afshin

0

你可以保持外循環加載輔助文件和電子郵件配置,然後從for循環的回報,它會發送給所有用戶一個一個循環結束再之後就可以做返回語句。

+0

歡迎使用stackoverflow。Stackoverflow不是論壇,請保留它的結構。這不僅僅是一個答案,而是一個評論。當你有足夠的聲望,你可以發表評論。 –

相關問題