#5335 "Emails Steward sends read as designed messages: an HTML alert email and weekly report, with a plain-text twin". - core/mail.py renders each email as multipart/alternative from templates/email/: a table-and-inline-style HTML part and a plain-text twin carrying the same facts. Colours are the design system's light theme, resolved from theme.css; nothing is fetched when a mail opens. - Alert email: state badge, a headline sentence ("Disk used on web01 is 94%."), rule, resource, reading, the condition in words, and the time in the zone Notifications was saved in with UTC beside it; "View in Steward" when Steward's address is set. Subject "[Steward] Firing: <rule> — <resource> 94%". Alerts now carry their operator. - Weekly report: monitors down, active alerts, the week's alert events, uptime and busiest Traefik routers as small tables with links. Sent from the configured From address; the "Generated … UTC" line and the stale repo footer are gone. - condition_text() states a condition from a rule's parts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
28 lines
1.3 KiB
HTML
28 lines
1.3 KiB
HTML
{# An alert email's HTML part: a = mail.alert_facts(), link = the alerts page or "". #}
|
||
{% extends "_layout.html" %}
|
||
{% from "_parts.html" import badge, button, fact with context %}
|
||
{% block title %}{{ a.state }}: {{ a.rule }}{% endblock %}
|
||
{% block body %}
|
||
<tr><td style="padding:14px 24px 0 24px;">{{ badge(a.tone, a.state) }}</td></tr>
|
||
<tr><td style="padding:10px 24px 4px 24px;font:600 20px/1.35 {{ c.font }};color:{{ c.text }};">{{ a.headline }}</td></tr>
|
||
<tr><td style="padding:10px 24px 4px 24px;">
|
||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
{{ fact("Rule", a.rule) }}
|
||
{{ fact("Resource", a.resource) }}
|
||
{{ fact("Reading", a.reading) }}
|
||
{{ fact("Fires when", a.condition) }}
|
||
{% call fact("When") %}{{ a.when }}{% if a.when_utc %}<br><span style="color:{{ c.muted }};">{{ a.when_utc }}</span>{% endif %}{% endcall %}
|
||
{% if a.note %}{{ fact("Note", a.note) }}{% endif %}
|
||
</table>
|
||
</td></tr>
|
||
{% if link %}
|
||
<tr><td style="padding:16px 24px 24px 24px;">{{ button(link, "View in Steward") }}</td></tr>
|
||
{% else %}
|
||
<tr><td style="padding:0 0 12px 0;"></td></tr>
|
||
{% endif %}
|
||
{% endblock %}
|
||
{% block footer %}
|
||
Steward sends this to everyone on its email list when an alert rule changes state.
|
||
Who gets it is set in Settings › Notifications.
|
||
{% endblock %}
|