Files
bp/app/Libraries/EmailLibrary.php

101 lines
3.4 KiB
PHP

<?php
namespace App\Libraries;
use CodeIgniter\Email\Email;
use Config\Services;
class EmailLibrary
{
/**
* Отправить письмо для подтверждения email
*/
public function sendVerificationEmail(string $email, string $name, string $token): bool
{
$emailConfig = config('Email');
// Генерируем URL для подтверждения
$verificationUrl = base_url('/auth/verify/' . $token);
// Рендерим HTML письма через Twig
$twig = Services::twig();
$htmlBody = $twig->render('emails/verification', [
'name' => $name,
'verification_url' => $verificationUrl,
'app_name' => $emailConfig->fromName ?? 'Бизнес.Точка',
]);
$emailer = Services::email($emailConfig);
$emailer->setTo($email);
$emailer->setFrom($emailConfig->fromEmail, $emailConfig->fromName);
$emailer->setSubject('Подтверждение регистрации');
$emailer->setMessage($htmlBody);
try {
return $emailer->send();
} catch (\Exception $e) {
log_message('error', 'Ошибка отправки email: ' . $e->getMessage());
return false;
}
}
/**
* Отправить уведомление об успешной регистрации (после подтверждения)
*/
public function sendWelcomeEmail(string $email, string $name): bool
{
$emailConfig = config('Email');
$twig = Services::twig();
$htmlBody = $twig->render('emails/welcome', [
'name' => $name,
'app_name' => $emailConfig->fromName ?? 'Бизнес.Точка',
]);
$emailer = Services::email($emailConfig);
$emailer->setTo($email);
$emailer->setFrom($emailConfig->fromEmail, $emailConfig->fromName);
$emailer->setSubject('Добро пожаловать!');
$emailer->setMessage($htmlBody);
try {
return $emailer->send();
} catch (\Exception $e) {
log_message('error', 'Ошибка отправки email: ' . $e->getMessage());
return false;
}
}
/**
* Отправить письмо для сброса пароля
*/
public function sendPasswordResetEmail(string $email, string $name, string $token): bool
{
$emailConfig = config('Email');
// Генерируем URL для сброса пароля
$resetUrl = base_url('/forgot-password/reset/' . $token);
// Рендерим HTML письма через Twig
$twig = Services::twig();
$htmlBody = $twig->render('emails/password_reset', [
'name' => $name,
'reset_url' => $resetUrl,
'app_name' => $emailConfig->fromName ?? 'Бизнес.Точка',
]);
$emailer = Services::email($emailConfig);
$emailer->setTo($email);
$emailer->setFrom($emailConfig->fromEmail, $emailConfig->fromName);
$emailer->setSubject('Сброс пароля');
$emailer->setMessage($htmlBody);
try {
return $emailer->send();
} catch (\Exception $e) {
log_message('error', 'Ошибка отправки email: ' . $e->getMessage());
return false;
}
}
}