Пример #1
0
 public function testGetById()
 {
     $savedModel = self::createBasicModel();
     $res = $savedModel->save();
     if (!$res) {
         print_r($savedModel->getErrors());
         $this->assertTrue(false);
     }
     $model = MailtankMailing::findByPk($savedModel->id);
     $this->assertNotEmpty($model);
     $this->clearUnusedData();
 }
Пример #2
0
 /**
  * Отправить рассылку в мейлтанк
  */
 private function sendToMailtank($template, $fields, $tags = [], $unsubscribeTags = [], $subscribers = [], $priority = null, $tagsAndReciversUnion = false, $attachments = [])
 {
     // NOTE: Т.к. метод приватный и все необходимые проверки сделаны,
     //       предполагаем, что все параметры правильные
     $fields = MailtankHelper::convertToString($fields);
     $attributes = ['layout_id' => MailtankHelper::createLayoutId($template, $this->templatePrefix), 'context' => $fields];
     if (is_array($attachments) && !empty($attachments)) {
         $attributes['attachments'] = $attachments;
     }
     if (is_array($tags) && !empty($tags)) {
         $tags = array_values($tags);
         $attributes['tags'] = $tags;
     }
     if (is_array($subscribers) && !empty($subscribers)) {
         $subscribers = array_values($subscribers);
         $attributes['subscribers'] = $subscribers;
     }
     $mailing = new MailtankMailing();
     $mailing->setAttributes($attributes);
     if (is_array($unsubscribeTags) && !empty($unsubscribeTags)) {
         $mailing->unsubscribe_tags = $unsubscribeTags;
     }
     $mailing->tags_and_receivers_union = $tagsAndReciversUnion;
     try {
         $mailing->save();
         switch ($mailing->status) {
             case 'SUCCEEDED':
             case 'ENQUEUED':
                 return true;
         }
         throw new MailtankException(MailtankHelper::implodeErrors('; ', $mailing->getErrors()));
     } catch (MailtankException $e) {
         // NOTE: Данный код нужен только для того, чтобы отслеживать недоступность сервиса
         //       При реальной ошибке мы ее не обнаружим, т.к. на этом уровне
         //       нельзя различить недоступность сервиса и ошибку мейлтанка, поэтому Sentry нам в помощь
         // Отправляем в сентри
         Yii::error(['msg' => 'Ошибка отправки сообщения в mailtank', 'data' => array_merge(['exceptionMsg' => $e->getMessage()], $mailing->getErrors())]);
         throw $e;
     }
 }