Skip to content

Zustellbarkeits-Linter ​

lintDeliverability(content, options?) prüft Template-JSON auf abweichende Linktexte, URL-Kürzer, rohe IP-Links und bildlastige E-Mails mit wenig sichtbarem Text.

Diese Regeln melden Inhaltsmuster, die Spamfilter und Richtlinien von Postfachanbietern benennen. Sie sagen keine Postfachplatzierung voraus: Absenderreputation, Authentifizierung und Empfängerreaktionen entscheiden darüber.

API ​

ts
import { lintDeliverability } from "@templatical/quality";

const issues = lintDeliverability(content);
// LintIssue[] mit deliverability.*-Regel-IDs

lintTemplate(content, options?) führt diese Regeln ebenfalls standardmäßig aus, nach Barrierefreiheit, Struktur und Links. link-text-domain-mismatch, url-shortener und ip-address-url haben standardmäßig warning; low-text hat info. Keine Regel hat einen Auto-Fix. Der Regelkatalog nennt Auslöser und Quellen.

Optionen ​

Mit deliverability: false deaktivieren Sie die Kategorie. DeliverabilityLintOptions akzeptiert rules?: RuleOverrides, thresholds?: Partial<DeliverabilityThresholds> und shortenerHosts?: string[].

OptionStandardWirkung
thresholds.minTextLength200deliverability.low-text meldet bei einem bilderzeugenden Block weniger sichtbare Zeichen als diesen Wert.
shortenerHostsDEFAULT_SHORTENER_HOSTSErsetzt die Hostliste für deliverability.url-shortener.
ts
import { DEFAULT_SHORTENER_HOSTS, lintDeliverability } from "@templatical/quality";

const issues = lintDeliverability(content, {
  deliverability: {
    thresholds: { minTextLength: 250 },
    shortenerHosts: [...DEFAULT_SHORTENER_HOSTS, "go.example.com"],
  },
});

Ein Regel-Override wie { rules: { "deliverability.low-text": "off" } } ändert eine einzelne Regel. Den vollständigen LintOptions-Vertrag finden Sie unter Optionen.

Grenzen ​

Der Linter liest Template-JSON, nicht die versendete Nachricht. Er kann die Postfachplatzierung nicht vorhersagen und weder Absenderreputation, Authentifizierung, Empfängerreaktionen, Abmelde-Header noch ESP-Footer prüfen. Er prüft keine Client-Kompatibilität, Gmail-Clipping oder die Größe des gerenderten HTML. Ein Versanddienst kann ein href nach dieser Prüfung für Klick-Tracking umschreiben. Ein custom-Block unterdrückt low-text, weil sein gerendertes HTML im JSON fehlt.

Prüfen ​

Speichern Sie dieses gültige Template als template.json:

json
{"blocks":[{"id":"button_1","type":"button","text":"Open the report","url":"https://bit.ly/x","backgroundColor":"#1d4ed8","textColor":"#ffffff","borderRadius":6,"fontSize":16,"buttonPadding":{"top":14,"right":28,"bottom":14,"left":28},"align":"center","styles":{"padding":{"top":0,"right":0,"bottom":0,"left":0}}}],"settings":{"width":600,"backgroundColor":"#ffffff","textColor":"#111111","fontFamily":"Arial, sans-serif","linkUnderline":true,"locale":"en"}}
bash
npx @templatical/template-tools validate template.json --json

Die gebaute CLI liefert Exit-Code 0. Ihre JSON-Ausgabe enthält dieses Issue (aus dem Template oben):

json
{"blockId":"button_1","ruleId":"deliverability.url-shortener","severity":"warning","message":"This link goes through the URL shortener bit.ly. Spam filters treat shortener links with suspicion because they hide the destination. Link to the destination instead."}