как решить проблему с ошибками компонента электронной почты CakePHP в плагине Sign Me Up - PullRequest
0 голосов
/ 25 марта 2012

Я использую плагин Sign Me Up от Jotlab и у меня проблемы с отправкой электронной почты. Я пытался связаться с автором, но пока безуспешно.

Я использую это с плагином ACL, и все, кроме отправки электронной почты, пока работает. Все исследования и поиск неисправностей не привели ни к каким ответам.

Это версия cakephp 2.x, и я знаю, что компонент электронной почты устарел, но должен работать.

Когда я отправляю регистрационную форму, запись вставляется, но электронное письмо не отправляется, и я получаю это сообщение об ошибке.

* * 1010

Вот код, который находится в контроллере для функции регистра:

public function register() {
    $this->__isLoggedIn();
    if (!empty($this->data)) {
        extract($this->settings);
        $model = $this->controller->modelClass;
        $this->controller->loadModel($model);
        $this->controller->{$model}->set($this->data);

        if (CakePlugin::loaded('Mongodb')) {
            $this->controller->{$model}->Behaviors->attach('Mongodb.SqlCompatible');
        }

        if ($this->controller->{$model}->validates()) {
            if (!empty($activation_field)) {
                $this->data[$model][$activation_field] = $this->controller->{$model}->generateActivationCode($this->data);
            } elseif (!empty($useractive_field)) {
                $this->data[$model][$useractive_field] = true;
            }

            if ($this->controller->{$model}->save($this->data, false)) {
                //If an activation field is supplied send out an email
                if (!empty($activation_field)) {
                    $this->__sendActivationEmail($this->data[$model]);
                    if (!$this->controller->request->is('ajax')) {
                        $this->controller->redirect(array('action' => 'activate'));
                    } else {
                        return true;
                    }
                } else {
                    $this->__sendWelcomeEmail($this->data[$model]);
                }
                if (!$this->controller->request->is('ajax')) {
                    $this->controller->redirect($this->Auth->loginAction);
                } else {
                    return true;
                }
            }
        }
    }
}

«Отправить письмо активации» и «отправить приветственное письмо»:

protected function __sendActivationEmail($userData) {
    $this->__setUpEmailParams($userData);
    $this->__parseEmailSubject('activation', $userData);
    if ($this->__setTemplate(Configure::read('SignMeUp.activation_template'))) {
        if ($this->Email->send($userData)) {
            return true;
        }
    }
}

protected function __sendWelcomeEmail($userData) {
    $this->__setUpEmailParams($userData);
    $this->__parseEmailSubject('welcome', $userData);
    if ($this->__setTemplate(Configure::read('SignMeUp.welcome_template'))) {
        if ($this->Email->send($userData)) {
            return true;
        }
    }
}

Я прочитал документацию по электронной почте и попробовал несколько вещей, включая переустановку более одного раза.

Любая помощь в устранении неполадок с этими сообщениями об ошибках очень ценится.

Спасибо, Пол

1 Ответ

0 голосов
/ 26 марта 2012

Отсутствующий файл был найден.По какой-то причине мой файл default.ctp в view / emails / text отсутствовал.Также убедитесь, что в нем есть следующий код:

<?php echo $content; ?>

Теперь электронные письма работают нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...