2013-11-02 4 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 에코하려고 다른. 그러나 그들 모두에게 전자 메일을 보내지는 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?! codeignitor으로

+0

참고 : BCC를 사용하면 –

+0

에 더 좋을 것입니다.하지만 제가 말씀 드린 것처럼, HTML 파일 내부의 가입자 이메일을 언급합니다. foreach 루프를 사용해야합니다. – Afshin

답변

1

귀하는 귀하의 루프 안에서 기능을 종료 할 때 "돌아갑니다".

그냥

+0

을 사용하는 대신 CI로 제안합니다. 작업 성공 여부에 관계없이 컨트롤러에서 반환 값을 얻고 있기 때문입니다. 나는 그것을 잘못하고 있냐?! – Afshin

+0

예. "return"이라고 말하면 함수를 종료합니다. 예를 들어, 각 루프에서 검사를 수행하고 실패 할 때 처음으로 종료하거나 루프 밖에서 루프가 "true"를 반환하면 – jmadsen

+0

감사합니다. 그것은 나를 도왔다. 하지만 답을 수정하고 실패 나 다른 경우에 어떻게 true 또는 false를 반환 할 것인지 예를 들어 주시겠습니까? – Afshin

3

사용

$this->email->clear() 

는 말한다 : 빈 상태로 를 초기화 모든 이메일 변수. 이 함수는 전자 메일 보내기 함수를 루프에서 실행하여 사이클간에 데이터를 다시 설정할 수 있도록하는 용도로 사용됩니다.

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 명의 회원이 있으며 ID 번호가 "1"인 사용자에게 메시지가 전송됩니다 – Afshin

0

당신은 루프 외부로드 도우미 파일 및 이메일 구성을 유지하고 루프의 반환을 제거 할 수 있습니다 보내, 모든 가입자 하나씩 루프가 완료 후 후이 작업을 수행 할 수 있습니다로 보내드립니다 return 문.

+0

에 오신 것을 환영합니다.Stackoverflow는 포럼이 아니므로 그 구조를 유지하십시오. 이것은 답변보다 더 많은 코멘트입니다. 평판이 충분할 때 의견을 게시 할 수 있습니다. –

관련 문제