bp/app/Libraries/EmailLibrary.php

101 lines
3.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}
}