stacks/monitoring/alertmanager/templates/email.tmpl

{{ define "email.default.html" }}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>{{ .CommonLabels.alertname }}</title>
  <style>
    body { font-family: -apple-system, Segoe UI, sans-serif; color: #222; }
    .firing { border-left: 4px solid #c0392b; padding-left: 12px; }
    .resolved { border-left: 4px solid #27ae60; padding-left: 12px; }
    code { background: #f4f4f4; padding: 1px 4px; border-radius: 3px; }
    table { border-collapse: collapse; margin-top: 8px; }
    td { padding: 4px 8px; border-bottom: 1px solid #eee; vertical-align: top; }
  </style>
</head>
<body>
  <h2>[{{ .Status | toUpper }}] {{ .CommonLabels.alertname }}</h2>

  {{ range .Alerts -}}
  <div class="{{ if eq .Status "firing" }}firing{{ else }}resolved{{ end }}">
    <p><strong>{{ .Annotations.summary }}</strong></p>
    {{ if .Annotations.description }}<p>{{ .Annotations.description }}</p>{{ end }}
    <table>
      {{ range .Labels.SortedPairs -}}
      <tr><td>{{ .Name }}</td><td><code>{{ .Value }}</code></td></tr>
      {{ end }}
      <tr><td>started</td><td>{{ .StartsAt.Format "2006-01-02 15:04:05" }}</td></tr>
      {{ if ne .Status "firing" -}}
      <tr><td>resolved</td><td>{{ .EndsAt.Format "2006-01-02 15:04:05" }}</td></tr>
      {{- end }}
    </table>
  </div>
  <hr>
  {{ end }}

  <p style="font-size: 0.8em; color: #888;">
    Sent by Alertmanager on homelab-1
  </p>
</body>
</html>
{{ end }}

{{ define "email.default.subject" }}
[{{ .Status | toUpper }}] {{ .CommonLabels.alertname }} ({{ .Alerts | len }})
{{ end }}