2012-03-18 3 views
0

마지막 전자 메일 행을 두 번 보내고있는이 코드가 무슨 문제입니까? YII 및 스위프트 메일러 확장자를 사용yii 및 마지막 전자 메일 행을 두 번 보내는 Swift Mailer 확장

  $emails = Newsletter::model()->findAll(); 
      if ($emails) { 
       $sent = 0; 
       foreach ($emails as $row) { 
        $secret = $this->createAbsoluteUrl('/site/newsletter/unsubscribe?s='.$row->secret.''); 
        $email = new YiiMailMessage(); 
        $email->setBody($model->body.'<br /><br /><small>Se você não deseja mais receber nossos e-mails,</small> <a style="color:#336699;" href="'.$secret.'">clique aqui</a>', 'text/html', 'utf-8'); 
        $email->addTo($row->email); 
        $email->from = Yii::app()->config->get('from_email'); 
        $email->setSubject($model->subject); 
        Yii::app()->mail->send($email); 
        $sent++; 
       } 
       if (!Yii::app()->mail->send($email)) { 
        Yii::app()->user->setFlash('error', 'Não conseguiu enviar mensagem'); 
       } 
       Yii::app()->user->setFlash('success', ''.$sent.' E-mails enviados com sucesso.'); 
      } else { 
       Yii::app()->user->setFlash('error', 'Não há assinantes de enviar a newsletter para.'); 
      } 

답변

1

문제는 다음과 같은 문자열입니다 : 여기

if (!Yii::app()->mail->send($email)) { 

모든, 다시 마지막 메시지를 전송하고,이 마지막 시도가 성공하면 또한 만 확인된다 . 나는 정확히 당신도 오류 메시지를 변환 할 수 없습니다 원인을 필요로하는 일없는 확신하지만, 마치 마법처럼 작동합니다 : 여기

$emails = Newsletter::model()->findAll(); 
if ($emails) { 
    $sent = 0; 
    foreach ($emails as $row) { 
     $secret = $this->createAbsoluteUrl('/site/newsletter/unsubscribe?s='.$row->secret.''); 
     $email = new YiiMailMessage(); 
     $email->setBody($model->body.'<br /><br /><small>Se você não deseja mais receber nossos e-mails,</small> <a style="color:#336699;" href="'.$secret.'">clique aqui</a>', 'text/html', 'utf-8'); 
     $email->addTo($row->email); 
     $email->from = Yii::app()->config->get('from_email'); 
     $email->setSubject($model->subject); 
     if (Yii::app()->mail->send($email)) $sent++; 
    } 
    if ($sent != count($emails)) { 
     Yii::app()->user->setFlash('error', 'Não conseguiu enviar mensagem'); 
    } 
    Yii::app()->user->setFlash('success', ''.$sent.' E-mails enviados com sucesso.'); 
} else { 
    Yii::app()->user->setFlash('error', 'Não há assinantes de enviar a newsletter para.'); 
} 

내가 $ 메시지를 보낸 경우에만 변수를 보낼 수 증가 및 결국 I 보내려는 이메일의 수가 성공적으로 보낸 메일 수와 동일한 지 확인하십시오.

+0

감사합니다. 이제 예상대로 작동합니다. – memo