Отправка почты — Yii 2.0

Я пытаюсь отправить почту, но получаю ошибку типа.

Неизвестное свойство — yii\base\UnknownPropertyException

Получение неизвестного свойства: yii\web\Application::mail

После изменения Yii::$app->mail->compose() на Yii::$app->mailer->compose() я получил эту ошибку

Неверный параметр — yii\base\InvalidParamException

Неверный псевдоним пути: @backend/mail

Я не понимаю, где я делаю ошибку.

Я использую yii-app-basic.

config/console.php

...
    'components' => [
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
        ],
    ],
...

config/web.php

...
    'components' => [
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@backend/mail',
            'useFileTransport' => true,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'localhost',
                'username' => 'root',
                'password' => '',
                'port' => '8080',
                'encryption' => 'tls',
            ],
        ],
    ],
...

SiteController.php

<?php

namespace app\controllers;

use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\swiftmailer\Mailer;

class SiteController extends Controller
{
    public function actionRegister()
    {
        Yii::$app->mail->compose()
                ->setFrom('[email protected]')
                ->setTo('[email protected]')
                ->setSubject('This is a test mail')
                ->send();
    }
}

Скриншот ошибки введите здесь описание изображения

Я новичок в Yii. Я понятия не имею. Если это глупый вопрос, пожалуйста, простите меня.

Получение помощи от Mailing-Yii 2.0. Но, не получая большого представления. Пожалуйста, помогите мне отправить письмо


person Nana Partykar    schedule 01.10.2015    source источник
comment
@InsaneSkull. Я отредактировал свой вопрос. Теперь содержимое страницы register.php доступно.   -  person Nana Partykar    schedule 01.10.2015
comment
Насколько я помню, backend в yii относится к другой конфигурации, чем веб-конфигурация.   -  person user3791372    schedule 01.10.2015


Ответы (3)


Используйте компонент mailer.

Yii::$app->mailer->compose()

В вашей конфигурации вы пишете components, что будет доступно в Yii::$app приложении.

Пример:

В конфигурации:

'components' => [
    'myComponent' => ['class' => '\common\MyClass']
]

В контроллере:

Yii::$app->myComponent->foo();
person Onedev_Link    schedule 01.10.2015
comment
Получил ошибку как неверный параметр – yii\base\InvalidParamException Неверный псевдоним пути: @backend/mail - person Nana Partykar; 01.10.2015
comment
Вы должны указать правильный путь к просмотру почты в параметре 'viewPath' => '@backend/mail', - person Onedev_Link; 01.10.2015
comment
где редактировать Mr @Onedev. И config.php, и web.php имеют параметр. И какой путь дать - person Nana Partykar; 01.10.2015
comment
Ага. Понятно. только что изменил 'viewPath' => '@backend/mail' на 'viewPath' => '@app/mail', - person Nana Partykar; 01.10.2015

Вы используете базовый шаблон. Путь '@backend/mail' предназначен только для расширенного шаблона. Правильный путь — @app/mail (или любой другой путь, по которому вы храните свои шаблоны электронной почты).

person hesselek    schedule 27.10.2017

хорошо, это старый вопрос, но если вы все еще используете yii, если вы хотите отправить почту без усилий, используйте dektrium, это заброшенный проект, но он предоставляет множество функций, управление пользователями, вход в систему по электронной почте и т. д.

person Amar Dje    schedule 14.04.2020