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(); }
/** * Отправить рассылку в мейлтанк */ 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; } }