Beispiel #1
0
 public function send($display_log = false)
 {
     $mailer = Yii::$app->mailer;
     $newsletter = $this->owner;
     $log = new NewsletterLog();
     $log->link('newsletter', $newsletter);
     $appendToLog = function ($string, $skip_eol = false) use($log, $display_log) {
         $content = $string . ($skip_eol ? '' : PHP_EOL);
         if ($display_log) {
             echo nl2br($content);
         }
         $log->content .= $content;
         $log->save();
     };
     $errors = [];
     foreach ($newsletter->mailingLists as $list) {
         if ($list->from_email) {
             $from_email = $list->from_email;
             $from_name = $list->from_name ?: null;
         } else {
             $from_email = Yii::$app->params['supportEmail'];
             $from_name = $list->from_name ?: Yii::$app->params['companyName'];
         }
         foreach ($list->partners as $partner) {
             if (!$partner->email) {
                 $appendToLog(sprintf("Partner #%s didn't have email. Skipping.", $partner->id));
                 continue;
             }
             $appendToLog($partner->email . ': ', true);
             $error = '';
             $content = $newsletter->processContent($newsletter->body, $partner);
             try {
                 $mail = $mailer->compose()->setHtmlBody($content)->setFrom($from_email, $from_name)->setTo($partner->email)->setSubject($newsletter->subject);
                 if ($list->reply_to) {
                     $mail->setReplyTo($list->reply_to);
                 }
                 foreach ($newsletter->getAttachments() as $attachment) {
                     $mail->attach($attachment->getPath());
                 }
                 $result = $mail->send();
                 $appendToLog($result ? __('Success') : __('Failed'));
             } catch (\Swift_SwiftException $e) {
                 $appendToLog(__('Failed') . ': ' . $e->getMessage());
                 $errors[] = $e->getMessage();
             }
         }
     }
     return $errors;
 }