System-Mails im pressekonto-CI: zentrales E-Mail-Layout fuer alle Transaktionsmails
- Neues Layout components/emails/layout (Wortmarke, 'Publisher - Hub'- Tagline, Brand-Familien-Fusszeile) + Button-Komponente; alle System- Mails (Magic-Link, Go-Live-Reset, Kontakt, PM published/rejected, Kuendigung, Widerruf) darauf umgestellt - Framework-Auth-Mails (Passwort-Reset, E-Mail-Verifizierung) via toMailUsing auf eigene Views im gleichen CI statt Laravel-Default - Anmeldelink-Betreff vereinheitlicht; EmailBrandingTest sichert das Branding ueber alle Mails ab Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
f0cd11aa57
commit
9832869596
16 changed files with 351 additions and 168 deletions
12
resources/views/components/emails/button.blade.php
Normal file
12
resources/views/components/emails/button.blade.php
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
@props([
|
||||
'url',
|
||||
])
|
||||
|
||||
{{-- E-Mail-tauglicher Button im Hub-CI (Tabellen-Konstrukt für Outlook). --}}
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0" style="margin: 22px 0;">
|
||||
<tr>
|
||||
<td style="border-radius: 4px; background-color: #1A2540;">
|
||||
<a href="{{ $url }}" style="display: inline-block; padding: 13px 30px; font-family: 'Inter Tight', 'Segoe UI', Arial, Helvetica, sans-serif; font-size: 14px; font-weight: bold; color: #ffffff; text-decoration: none; border-radius: 4px;">{{ $slot }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
106
resources/views/components/emails/layout.blade.php
Normal file
106
resources/views/components/emails/layout.blade.php
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
@props([
|
||||
'title' => null,
|
||||
'preheader' => null,
|
||||
])
|
||||
|
||||
@php
|
||||
/**
|
||||
* Zentrales CI-Layout für alle System-E-Mails (Auth, Pressemitteilungen,
|
||||
* Kündigung/Widerruf, Kontakt). Absender-Marke ist immer pressekonto —
|
||||
* der gemeinsame Publisher · Hub der Portale presseecho und
|
||||
* businessportal24. Header und Footer erklären diese Zugehörigkeit,
|
||||
* damit Empfänger die Mail sofort einordnen können.
|
||||
*
|
||||
* E-Mail-tauglich gebaut: Tabellen-Layout, Inline-Styles für alles
|
||||
* Layout-Kritische, ergänzende Klassen im <style>-Block (werden von
|
||||
* Gmail/Outlook.com/Apple Mail unterstützt; ohne sie bleibt die Mail
|
||||
* trotzdem lesbar).
|
||||
*/
|
||||
$brand = config('domains.domains.pressekonto.brand', []);
|
||||
$taglineShort = $brand['tagline_short'] ?? 'Publisher · Hub';
|
||||
$footerLegal = str_replace(':year', (string) now()->year, $brand['footer_legal'] ?? '© '.now()->year.' pressekonto · Alle Rechte vorbehalten');
|
||||
$presseechoUrl = config('domains.domain_presseecho_url');
|
||||
$businessportalUrl = config('domains.domain_businessportal_url');
|
||||
$fontStack = "'Inter Tight', 'Segoe UI', Arial, Helvetica, sans-serif";
|
||||
@endphp
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="color-scheme" content="light">
|
||||
<title>{{ $title }}</title>
|
||||
<style>
|
||||
.email-body p { margin: 0 0 14px; }
|
||||
.email-body .title { font-size: 17px; font-weight: bold; color: #1A2540; margin: 18px 0; padding-left: 14px; border-left: 3px solid #B07A3A; }
|
||||
.email-body .meta { background: #f6f4ef; border-left: 3px solid #1A2540; padding: 14px 18px; margin: 18px 0; }
|
||||
.email-body .meta-danger { background: #fdf2f0; border-left: 3px solid #b3401f; padding: 14px 18px; margin: 18px 0; }
|
||||
.email-body .meta dt, .email-body .meta-danger dt { font-weight: bold; color: #1A2540; font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }
|
||||
.email-body .meta dd, .email-body .meta-danger dd { margin: 2px 0 10px; }
|
||||
.email-body .message { white-space: pre-line; background: #f6f4ef; border: 1px solid #e8e4da; padding: 16px 18px; margin: 18px 0; }
|
||||
.email-body .note { font-size: 12.5px; color: #6b7280; border-top: 1px solid #e8e4da; padding-top: 14px; margin-top: 26px; }
|
||||
.email-body .note p { margin: 0 0 8px; }
|
||||
.email-body a { color: #1A2540; }
|
||||
</style>
|
||||
</head>
|
||||
<body style="margin: 0; padding: 0; background-color: #e8e4da;">
|
||||
|
||||
@if ($preheader)
|
||||
{{-- Vorschautext im Posteingang; im Mail-Body unsichtbar. --}}
|
||||
<div style="display: none; max-height: 0; overflow: hidden; mso-hide: all;">{{ $preheader }}</div>
|
||||
@endif
|
||||
|
||||
<table role="presentation" width="100%" border="0" cellpadding="0" cellspacing="0" style="background-color: #e8e4da;">
|
||||
<tr>
|
||||
<td align="center" style="padding: 32px 16px;">
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 600px;">
|
||||
|
||||
{{-- Bernstein-Akzentstreifen (CI: 3px-Streifen des Hubs) --}}
|
||||
<tr>
|
||||
<td style="height: 3px; background-color: #B07A3A; font-size: 0; line-height: 0;"> </td>
|
||||
</tr>
|
||||
|
||||
{{-- Header: Wortmarke + Publisher · Hub in Hub-Blau --}}
|
||||
<tr>
|
||||
<td style="background-color: #1A2540; padding: 26px 36px;">
|
||||
<span style="font-family: {{ $fontStack }}; font-size: 22px; font-weight: bold; letter-spacing: -0.4px; line-height: 1;"><span style="color: #ffffff;">{{ $brand['name'] ?? 'presse' }}</span><span style="color: #B07A3A;">{{ $brand['accent'] ?? 'konto' }}</span></span>
|
||||
<div style="font-family: {{ $fontStack }}; font-size: 10px; font-weight: bold; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(255, 255, 255, 0.65); margin-top: 8px;">
|
||||
{{ $taglineShort }}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{{-- Inhalt --}}
|
||||
<tr>
|
||||
<td class="email-body" style="background-color: #ffffff; padding: 32px 36px 28px; font-family: {{ $fontStack }}; font-size: 14.5px; line-height: 1.65; color: #2a3038;">
|
||||
{{ $slot }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{{-- Brand-Familie: Zugehörigkeit von presseecho + businessportal24 --}}
|
||||
<tr>
|
||||
<td style="background-color: #ffffff; border-top: 1px solid #e8e4da; padding: 20px 36px 24px; font-family: {{ $fontStack }}; font-size: 12px; line-height: 1.7; color: #6b7280;">
|
||||
<span style="font-weight: bold; color: #1A2540;">presse<span style="color: #B07A3A;">konto</span></span>
|
||||
ist der gemeinsame Publisher · Hub für
|
||||
<a href="{{ $presseechoUrl }}" style="font-weight: bold; text-decoration: none;"><span style="color: #1B2417;">presse</span><span style="color: #345636;">echo</span></a>
|
||||
und
|
||||
<a href="{{ $businessportalUrl }}" style="font-weight: bold; text-decoration: none;"><span style="color: #232A33;">businessportal</span><span style="color: #C84A1E;">24</span></a>
|
||||
— ein Konto, redaktionell geprüft, auf beiden Portalen veröffentlichen.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
{{-- Rechtliches unterhalb der Karte --}}
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 600px;">
|
||||
<tr>
|
||||
<td align="center" style="padding: 18px 8px 6px; font-family: {{ $fontStack }}; font-size: 11.5px; color: #8a8f96;">
|
||||
{{ $footerLegal }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue