2.0 KiB
2.0 KiB
Story 8.1: Email Infrastructure Setup
Epic Reference
Epic 8: Email Notification System
User Story
As a developer, I want to configure email sending infrastructure and base templates, So that all emails have consistent branding and reliable delivery.
Acceptance Criteria
SMTP Configuration
- MAIL_MAILER configured via .env
- MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD
- MAIL_ENCRYPTION (TLS)
- MAIL_FROM_ADDRESS: no-reply@libra.ps
- MAIL_FROM_NAME: Libra Law Firm / مكتب ليبرا للمحاماة
Base Email Template
- Libra logo in header
- Navy blue (#0A1F44) and gold (#D4AF37) colors
- Professional typography
- Footer with firm contact info
- Mobile-responsive layout
Technical Setup
- Plain text fallback generation
- Queue configuration for async sending
- Email logging for debugging
Technical Notes
// config/mail.php - from .env
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'no-reply@libra.ps'),
'name' => env('MAIL_FROM_NAME', 'Libra Law Firm'),
],
// resources/views/vendor/mail/html/header.blade.php
<tr>
<td class="header" style="background-color: #0A1F44; padding: 25px;">
<a href="{{ config('app.url') }}">
<img src="{{ asset('images/logo-email.png') }}" alt="Libra Law Firm" height="45">
</a>
</td>
</tr>
// Base Mailable
abstract class BaseMailable extends Mailable
{
use Queueable, SerializesModels;
public function build()
{
return $this->from(config('mail.from.address'), $this->getFromName());
}
protected function getFromName(): string
{
$locale = $this->getLocale();
return $locale === 'ar' ? 'مكتب ليبرا للمحاماة' : 'Libra Law Firm';
}
}
Definition of Done
- SMTP sending works
- Base template with branding
- Plain text fallback
- Queued delivery works
- Tests pass
Estimation
Complexity: Medium | Effort: 3-4 hours