agent foundation
This commit is contained in:
@@ -5,7 +5,7 @@ namespace MintyPHP\Service\Mail;
|
||||
use MintyPHP\Domain\Taxonomy\MailLogStatus;
|
||||
use MintyPHP\I18n;
|
||||
use MintyPHP\Repository\Mail\MailLogRepositoryInterface;
|
||||
use MintyPHP\Service\Settings\SettingGateway;
|
||||
use MintyPHP\Service\Settings\SettingsSmtpGateway;
|
||||
use PHPMailer\PHPMailer\Exception as MailerException;
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
|
||||
@@ -13,7 +13,7 @@ class MailService
|
||||
{
|
||||
public function __construct(
|
||||
private readonly MailLogRepositoryInterface $mailLogRepository,
|
||||
private readonly SettingGateway $settingGateway
|
||||
private readonly SettingsSmtpGateway $settingsSmtpGateway
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ class MailService
|
||||
string $text,
|
||||
array $meta = []
|
||||
): array {
|
||||
// Log before sending so there's a record even if the send throws an exception.
|
||||
$logId = $this->mailLogRepository->create([
|
||||
'to_email' => $to,
|
||||
'subject' => $subject,
|
||||
@@ -90,19 +91,6 @@ class MailService
|
||||
if (!is_file($textPath)) {
|
||||
$textPath = $base . '/' . $template . '.txt';
|
||||
}
|
||||
if (!is_file($htmlHeaderPath)) {
|
||||
$htmlHeaderPath = $base . '/partials/header.html';
|
||||
}
|
||||
if (!is_file($htmlFooterPath)) {
|
||||
$htmlFooterPath = $base . '/partials/footer.html';
|
||||
}
|
||||
if (!is_file($textHeaderPath)) {
|
||||
$textHeaderPath = $base . '/partials/header.txt';
|
||||
}
|
||||
if (!is_file($textFooterPath)) {
|
||||
$textFooterPath = $base . '/partials/footer.txt';
|
||||
}
|
||||
|
||||
$html = is_file($htmlPath) ? file_get_contents($htmlPath) : '';
|
||||
$text = is_file($textPath) ? file_get_contents($textPath) : '';
|
||||
if (!isset($vars['email_header'])) {
|
||||
@@ -138,16 +126,18 @@ class MailService
|
||||
$mailer = new PHPMailer(true);
|
||||
$mailer->isSMTP();
|
||||
|
||||
$host = $this->settingGateway->getSmtpHost() ?? (getenv('SMTP_HOST') ?: '');
|
||||
$port = $this->settingGateway->getSmtpPort() ?? (int) (getenv('SMTP_PORT') ?: 587);
|
||||
$user = $this->settingGateway->getSmtpUser() ?? (getenv('SMTP_USER') ?: '');
|
||||
$pass = $this->settingGateway->getSmtpPassword() ?? (getenv('SMTP_PASS') ?: '');
|
||||
$secure = $this->settingGateway->getSmtpSecure() ?? strtolower((string) (getenv('SMTP_SECURE') ?: 'tls'));
|
||||
$from = $this->settingGateway->getSmtpFrom() ?? (getenv('SMTP_FROM') ?: ($user ?: 'no-reply@localhost'));
|
||||
$fromName = $this->settingGateway->getSmtpFromName() ?? (getenv('SMTP_FROM_NAME') ?: appTitle());
|
||||
// DB setting takes priority; env var fallback allows Docker-compose-style configuration without a DB record.
|
||||
$host = $this->settingsSmtpGateway->getSmtpHost() ?? (getenv('SMTP_HOST') ?: '');
|
||||
$port = $this->settingsSmtpGateway->getSmtpPort() ?? (int) (getenv('SMTP_PORT') ?: 587);
|
||||
$user = $this->settingsSmtpGateway->getSmtpUser() ?? (getenv('SMTP_USER') ?: '');
|
||||
$pass = $this->settingsSmtpGateway->getSmtpPassword() ?? (getenv('SMTP_PASS') ?: '');
|
||||
$secure = $this->settingsSmtpGateway->getSmtpSecure() ?? strtolower((string) (getenv('SMTP_SECURE') ?: 'tls'));
|
||||
$from = $this->settingsSmtpGateway->getSmtpFrom() ?? (getenv('SMTP_FROM') ?: ($user ?: 'no-reply@localhost'));
|
||||
$fromName = $this->settingsSmtpGateway->getSmtpFromName() ?? (getenv('SMTP_FROM_NAME') ?: appTitle());
|
||||
|
||||
$mailer->Host = $host;
|
||||
$mailer->Port = $port;
|
||||
// Enable SMTP auth only if credentials are configured — supports relay servers without auth.
|
||||
$mailer->SMTPAuth = $user !== '' || $pass !== '';
|
||||
$mailer->Username = $user;
|
||||
$mailer->Password = $pass;
|
||||
|
||||
Reference in New Issue
Block a user