Страница 1 из 1

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

Добавлено: 2019.10.08, 16:19
roswe47
Доброго времени.
Подскажите как можно передать данные из формы, при регистрации ,
на е-маил который мне нужно?

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

Добавлено: 2019.10.08, 17:19
ElisDN
Скопировать код из ContactForm в SignupForm.

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

Добавлено: 2019.10.09, 11:32
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();
    }

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

Объестните, пожалуйста, куда подставлять другой е-маил что бы приходили данные,
я по разному уже пробовал.

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

Добавлено: 2019.10.09, 11:37
yiiliveext
Mailer настройте, по умолчанию отправленные письма сохраняются в runtime/mail

https://www.yiiframework.com/extension/ ... ler-mailer

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

Добавлено: 2019.10.15, 09:25
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>

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

Добавлено: 2019.10.15, 09:34
ElisDN

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

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

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

Добавлено: 2019.10.15, 09:59
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

не пойму ,какой путь правильный?

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

Добавлено: 2019.10.15, 12:47
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.

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

Добавлено: 2019.10.15, 16:56
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', 'Имя пользователя')]) ?>
осталось теперь значение передать
как это лучше сделать?

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

Добавлено: 2019.10.15, 19:14
ElisDN

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

Yii::$app->mailer->compose(['html' => 'test'], ['model' => $model])

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

Добавлено: 2019.10.16, 10:46
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 надо чистить.

Отчество','Место проживания','Телефон', - эти поля не передаются потому что я их создал,
как их теперь связать с моделью.?

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

Добавлено: 2019.10.16, 11:02
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>

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

Добавлено: 2019.10.16, 15:14
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>
Да так действительно лучше, огромное спасибо..