Передать данные на емаил

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
roswe47
Сообщения: 18
Зарегистрирован: 2017.08.31, 22:57

Передать данные на емаил

Сообщение roswe47 »

Доброго времени.
Подскажите как можно передать данные из формы, при регистрации ,
на е-маил который мне нужно?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Передать данные на емаил

Сообщение ElisDN »

Скопировать код из ContactForm в SignupForm.
roswe47
Сообщения: 18
Зарегистрирован: 2017.08.31, 22:57

Re: Передать данные на емаил

Сообщение roswe47 »

Скопировал код из ContactForm
У меня basic "dektrium"
yii2-swiftmailer настроен письмо для подтверждения регист... user получает.

Что бы отправить на другой е-маил результат этих полей.

Код: Выделить всё

                            <?= $form->field($model, 'city')->textInput(['placeholder' => \Yii::t('user', 'Введите город')]) ?>

                            <?= $form->field($model, 'phone')->textInput(['placeholder' => \Yii::t('user', 'Введите номер')]) ?>

                            <?= $form->field($model, 'email')->textInput(['placeholder' => \Yii::t('user', 'Электронная почта')]) ?>

                            <?= $form->field($model, 'username')->textInput(['placeholder' => \Yii::t('user', 'Имя пользователя')]) ?>
Я добавил в модель так

Код: Выделить всё

 public $email;
    public $username;
    public $city;
    public $phone;
    
   public function sendEmail($email)
    {

          return Yii::$app->mailer->compose()
              ->setTo($email)
              ->setFrom([Yii::$app->params['senderEmail'] => Yii::$app->params['senderName']])
              ->setReplyTo([$this->email => $this->name])
              ->setSubject($this->city)
              ->setTextBody($this->phone)
              ->send();
    }

письмо не пришло.

Объестните, пожалуйста, куда подставлять другой е-маил что бы приходили данные,
я по разному уже пробовал.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Передать данные на емаил

Сообщение yiiliveext »

Mailer настройте, по умолчанию отправленные письма сохраняются в runtime/mail

https://www.yiiframework.com/extension/ ... ler-mailer
roswe47
Сообщения: 18
Зарегистрирован: 2017.08.31, 22:57

Re: Передать данные на емаил

Сообщение roswe47 »

Если скопировать код из ContactForm в RegistrationForm.php.

Получаю такое письмо.

*Это письмо отправлено почтовым сервером yandex.ru.

К сожалению, мы вынуждены сообщить Вам о том, что Ваше письмо не может
быть отправлено одному или нескольким адресатам. Технические подробности можно найти ниже.

Возможные причины недоставки указаны по адресу:
https://yandex.ru/support/mail-new/wiza ... andex.html

Пожалуйста, не отвечайте на это сообщение. *

нагуглил такую инструкцию проверил она работает письма приходят .
https://webformyself.com/yii2-mailer/

Как с помощью неё реализовать отправку всех данных внесённых при регистрации на личный емаил модератора?
мне поля под переменные подставить или как это грамотно сделать?

Код: Выделить всё

public function actionIndex()
    {
        $names = ['Иванов', 'Петров', 'Сидоров'];
        Yii::$app->mailer->compose(['names' => $names])
         ->setFrom(['@ya.ru' =>'Письмо с сайта'])
         ->setTo('@ya.ru')
         ->setSubject('Тема сообщения')
           //->setTextBody('Текст сообщения')
          //  ->setHtmlBody('<b>текст сообщения в формате HTML</b>')
            ->send();

        return $this->render('mail/test', [
            'names' => $names,]);

    }

Код: Выделить всё

<table style="border: 1px solid #ddd; border-collapse: collapse; width: 100%;">
    <thead>
    <tr style="background: #f9f9f9;">
        <th style="padding: 8px; border: 1px solid #ddd;">#</th>
        <th style="padding: 8px; border: 1px solid #ddd;">Имя</th>
    </tr>
    </thead>
    <tbody>
    <?php $i = 1; foreach($names as $name): ?>
        <tr>
            <td style="padding: 8px; border: 1px solid #ddd;"><?= $i ?></td>
            <td style="padding: 8px; border: 1px solid #ddd;"><?= $name ?></td>
        </tr>
        <?php $i++; endforeach; ?>
    </tbody>
</table>
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Передать данные на емаил

Сообщение ElisDN »

Код: Выделить всё

Yii::$app->mailer->compose(['html' => 'test'], ['names' => $names])
И в конфиге в 'transport' настроить подключение по 'smtp'.
roswe47
Сообщения: 18
Зарегистрирован: 2017.08.31, 22:57

Re: Передать данные на емаил

Сообщение roswe47 »

да точно 'html' => 'test' спс,
для проверки написал так

Код: Выделить всё

   public function actionRegist()
    {
        $names = ['name', 'lastname', 'firstname'];
        Yii::$app->mailer->compose(['html' => 'test'], ['names' => $names])
            ->setFrom(['l@ya.ru' =>'Письмо с сайта'])
            ->setTo('@ya.ru')
            ->setSubject('Тема сообщения')
            //->setTextBody('Текст сообщения')
            //  ->setHtmlBody('<b>текст сообщения в формате HTML</b>')
            ->send();

        return $this->render('@dektrium/user/views', [
            'names' => $names,]);

    }
конфиг

Код: Выделить всё

'view' => [
            'theme' => [
                'pathMap' => [
                    '@dektrium/rbac/views/permission' => '@vendor/cinghie/yii2-user-extended/views/permission',
                    '@dektrium/rbac/views/role' => '@vendor/cinghie/yii2-user-extended/views/role',
                    '@dektrium/rbac/views/rule' => '@vendor/cinghie/yii2-user-extended/views/rule',
                    '@dektrium/user/views/admin' => '@vendor/cinghie/yii2-user-extended/views/admin',
                    '@dektrium/user/views/profile' => '@vendor/cinghie/yii2-user-extended/views/profile',
                    '@dektrium/user/views/role' => '@vendor/cinghie/yii2-user-extended/views/role',
                    //  '@dektrium/user/views/security' => '@vendor/cinghie/yii2-user-extended/views/adminlte/security',
                    '@dektrium/user/views/settings' => '@vendor/cinghie/yii2-user-extended/views/settings',
                    '@dektrium/rbac/views' => '@vendor/cinghie/yii2-user-extended/views',
                    '@dektrium/user/views' => '@vendor/cinghie/yii2-user-extended/views',

                ],
            ],
        ],
результат

Неопределенная переменная: имена
1. в /var/www/example.com/basic/vendor/cinghie/yii2-user-extended/views/registration/_two_column.php

не пойму ,какой путь правильный?
roswe47
Сообщения: 18
Зарегистрирован: 2017.08.31, 22:57

Re: Передать данные на емаил

Сообщение roswe47 »

Код: Выделить всё

'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',

            'useFileTransport' => false,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.yandex.ru',
                'username' => 'my_email@yandex.ru',
                'password' => 'my_password',
                'port' => '587',
                'encryption' => 'tls',
            ],
        ],
у меня такие настройки ,
но в runtime нет папки mail.
roswe47
Сообщения: 18
Зарегистрирован: 2017.08.31, 22:57

Re: Передать данные на емаил

Сообщение roswe47 »

настроил майлер письмо приходят
там всего две строчки в экшин надо было написать

<?= $form->field($model, 'city')->textInput(['placeholder' => \Yii::t('user', 'Введите город')]) ?>

<?= $form->field($model, 'email')->textInput(['placeholder' => \Yii::t('user', 'Электронная почта')]) ?>

<?= $form->field($model, 'username')->textInput(['placeholder' => \Yii::t('user', 'Имя пользователя')]) ?>
осталось теперь значение передать
как это лучше сделать?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Передать данные на емаил

Сообщение ElisDN »

Код: Выделить всё

Yii::$app->mailer->compose(['html' => 'test'], ['model' => $model])
roswe47
Сообщения: 18
Зарегистрирован: 2017.08.31, 22:57

Re: Передать данные на емаил

Сообщение roswe47 »

написал так

Код: Выделить всё

 $names = ['Имя','Фамилия','Отчество','Дата рождения','Место проживания','Телефон', 'Логин'];
        Yii::$app->mailer->compose(['html' => 'date'], ['model' => $model])

            ->setFrom(['email@ya.ru' =>'Письмо с сайта'])
            ->setTo('email@ya.ru')
            ->setSubject('Уведомление о регистрации нового пользователя.')
          ->send();
        return $this->render('register', ['names'  => $names,
            'model'  => $model,
            'module' => $this->module,
        ]);
-----

Код: Выделить всё

<body>
<table style="border: 1px solid #ddd; border-collapse: collapse; width: 100%;">
    <thead>
    <tr style="background: #f9f9f9;">
        <th style="padding: 8px; border: 1px solid #ddd;">#</th>
    </tr>
    </thead>
<tbody>
<?php  foreach($model as $model): ?>
    <tr>
        <td style="padding: 8px; border: 1px solid #ddd;"><?= $model ?></td>

    </tr>
    <?php  endforeach; ?>
</tbody>
</table>
</body>
получаю такое письмо

1
swnym
lastname
firstname
2019-10-27
email@ya.ru
User-name
предыдущий email@ya.ru
предыдущий email@ya.ru

предыдущий email тот который раннее подставлялся в ->setTo('email@ya.ru') для проверки ,-так понимаю логи runtime надо чистить.

Отчество','Место проживания','Телефон', - эти поля не передаются потому что я их создал,
как их теперь связать с моделью.?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Передать данные на емаил

Сообщение ElisDN »

Не мучайтесь с $names. Пропишите вручную без цикла:

Код: Выделить всё

<tbody>
    <tr>
        <td style="padding: 8px; border: 1px solid #ddd;">Имя</td>
        <td style="padding: 8px; border: 1px solid #ddd;"><?= Html::encode($model->firstname) ?></td>
    </tr>
    <tr>
        <td style="padding: 8px; border: 1px solid #ddd;">Фамилия</td>
        <td style="padding: 8px; border: 1px solid #ddd;"><?= Html::encode($model->lastname) ?></td>
    </tr>
    ...
</tbody>
roswe47
Сообщения: 18
Зарегистрирован: 2017.08.31, 22:57

Re: Передать данные на емаил

Сообщение roswe47 »

ElisDN писал(а): 2019.10.16, 11:02 Не мучайтесь с $names. Пропишите вручную без цикла:

Код: Выделить всё

<tbody>
    <tr>
        <td style="padding: 8px; border: 1px solid #ddd;">Имя</td>
        <td style="padding: 8px; border: 1px solid #ddd;"><?= Html::encode($model->firstname) ?></td>
    </tr>
    <tr>
        <td style="padding: 8px; border: 1px solid #ddd;">Фамилия</td>
        <td style="padding: 8px; border: 1px solid #ddd;"><?= Html::encode($model->lastname) ?></td>
    </tr>
    ...
</tbody>
Да так действительно лучше, огромное спасибо..
Ответить