PS 1.7: добавить пароль клиента в письмо отправляемое при регистрации пользователя
И наконец, что бы завершить тему с паролями в email, рассмотрим ситуацию с письмом «Добро пожаловать», которое отправляется при регистрации новой клиентской записи. Отправка этого письма зависит от настройки опции «Отправить email после регистрации» в настройках клиента в параметрах магазина.
Шаблон письма несмотря на многообещающий заголовок «Вот ваши данные для входа» содержит только email клиента, упоминания о пароле нет, и данные пароля в шаблон письма не передаются.
Если же вы хотите, чтобы пароль клиенту высылался в этом письме, прежде всего необходимо сделать правки в файле classes/form/CustomerPersister.php, а именно в функции sendConfirmationMail, отвечающей за отправку письма с регистрационными данными.
Было:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
private function sendConfirmationMail(Customer $customer) { if ($customer->is_guest || !Configuration::get('PS_CUSTOMER_CREATION_EMAIL')) { return true; } return Mail::Send( $this->context->language->id, 'account', $this->translator->trans( 'Welcome!', array(), 'Emails.Subject' ), array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, ), $customer->email, $customer->firstname . ' ' . $customer->lastname ); } |
Стало:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
private function sendConfirmationMail(Customer $customer,$clearTextPassword) { if ($customer->is_guest || !Configuration::get('PS_CUSTOMER_CREATION_EMAIL')) { return true; } return Mail::Send( $this->context->language->id, 'account', $this->translator->trans( 'Welcome!', array(), 'Emails.Subject' ), array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => $clearTextPassword, ), $customer->email, $customer->firstname . ' ' . $customer->lastname ); } |
Также нужно добавить переменную $clearTextPassword во все вызовы функции sendConfirmationMail в этом файле.
Было:
|
1 |
$this->sendConfirmationMail($customer); |
Стало:
|
1 |
$this->sendConfirmationMail($customer,$clearTextPassword); |
В этой переменной содержится текстовая версия пароля пользователя. Использовать свойство $customer->passwd не имеет смысла, потому что тут пароль сохраняется в закодированном виде.
Ну и в завершении нужно добавить пароль к шаблону письма account.html, который как правило находится по адресу /mail/<язык фронт офиса>/ или themes/<имя активного шаблона>/mail/<язык фронт офиса>/
Было:
|
1 2 3 |
<span style="color:#777"> Вот ваши данные для входа:<br /> <span style="color:#333"><strong>Адрес электронной почты: <a href="mailto:{email}" style="color:#337ff1">{email}</a></strong></span> </span> |
Стало:
|
1 2 3 4 |
<span style="color:#777">Вот ваши данные для входа:<br /> <span style="color:#333"><strong>Адрес электронной почты: <a href="mailto:{email}" style="color:#337ff1">{email}</a></strong></span> <br /> <span style="color: #333;"><strong>Пароль:</strong> {passwd}</span> </span> |

Добавить комментарий