Kein Plugin in gatsby-config
Formular-Plugins können bei großen Upgrades brechen und werden oft früher aufgegeben als deine Website. Hier gibt es keine solche Abhängigkeit zu künftigen Gatsby-Versionen.
Integrationen · framework
Gatsby baut statische Dateien; das Formular muss extern senden. Gatsby Functions binden an eine Laufzeit, Host-Formulare an den Host. Beim Ende von Gatsby Cloud zeigte sich, welche Teile portabel waren. Formularverarbeitung oft nicht.
Ein Mailcontact-Formular hat diese Bindung nicht. Es ist React-Markup mit action und übersteht Hostwechsel, Gatsby-Upgrades und spätere Neuentwicklung.
empfohlene Einrichtung
Füge dieses HTML auf deiner Website ein oder verwende den Formulargenerator. Ersetze den Formularlink durch deinen. Das gehostete Skript fügt die verborgene Prüfung ein, übernimmt Versand und Verifizierung und bewahrt Entwürfe bei Fehlern. Du bestimmst HTML und CSS. Free-Formulare zeigen einen sichtbaren Link „Processed by mailcontact.app“, Pro und Plus nicht. Die Rückmeldung folgt der Browsersprache. Setze data-mailcontact-language="fr" am Formular, um Französisch festzulegen.
<form action="https://mailcontact.app/api/forms/your-form-id" method="POST" data-mailcontact-form lang="de" data-mailcontact-language="de">
<input type="hidden" name="_language" value="de" />
<fieldset>
<legend>Kontaktiere uns</legend>
<label>
Name (optional)
<input name="name" type="text" autocomplete="name" maxlength="200" />
</label>
<label>
E-Mail
<input name="email" type="email" autocomplete="email" maxlength="320" required />
</label>
<label>
Nachricht
<textarea name="message" rows="5" maxlength="5000" required></textarea>
</label>
<noscript>
<div aria-hidden="true" style="position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;">
<label>Website
<input name="company_website" type="text" tabindex="-1" autocomplete="off" />
</label>
</div>
</noscript>
<button type="submit">Nachricht senden</button>
</fieldset>
<p data-contact-status role="status" aria-live="polite" aria-atomic="true"></p>
</form>
<script defer src="https://mailcontact.app/forms/v1.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>Für Komponenten mit eigenem Submit-Handler lade dasselbe Skript und nutze MailContact.prepare(form) und MailContact.send() statt der automatischen Markierung. Siehe die Referenz für eigene Oberflächen für Laden, Rückmeldungen und Quellenhinweis bei Free.
das Snippet
Dieses Beispiel sendet direkt an die API. Behalte das erforderliche company_website Feld vorhanden und leer. Native Einsendungen öffnen bei Erfolg JSON oder bei Bedarf eine Prüfseite. Eigene Skripte ohne Verifizierung senden verdächtige Nachrichten zur Prüfung in Spam; deutlicher Spam wird ebenfalls ohne Benachrichtigung und Kontingentverbrauch zurückgehalten. Eine Erfolgsantwort bestätigt den Empfang einschließlich Prüfung oder das stille Verwerfen eines ausgefüllten Prüffelds. Siehe Spamschutz für das vollständige Verhalten.
import * as React from "react";
// No src/api/ function. No host form feature. Nothing to migrate later.
export default function ContactPage() {
const [sent, setSent] = React.useState(false);
async function submit(event) {
event.preventDefault();
await fetch("https://mailcontact.app/api/forms/your-form-id", {
method: "POST",
body: new FormData(event.target),
});
setSent(true);
}
if (sent) return <p>Thanks. We'll be in touch.</p>;
return (
<form onSubmit={submit}>
<input name="name" placeholder="Your name" required />
<input name="email" type="email" placeholder="[email protected]" required />
<textarea name="message" placeholder="What's on your mind?" required />
<input name="company_website" type="text" tabIndex={-1} autoComplete="off"
style={{ position: "absolute", left: "-10000px" }} aria-hidden="true" />
<button>Send</button>
</form>
);
}so funktioniert es
Ein Postfach pro Projekt, mit Endpunkt und Projektadresse vor dem ersten Build.
Füge es in src/pages/contact.js ein und ersetze die Endpunkt-ID. Ohne gatsby-config-Plugin, Umgebungsvariable oder geänderten Build-Befehl.
Füge Discord, Slack, E-Mail oder Webhook hinzu, um dort Nachrichtenmeldungen zu erhalten.
warum Mailcontact
Formular-Plugins können bei großen Upgrades brechen und werden oft früher aufgegeben als deine Website. Hier gibt es keine solche Abhängigkeit zu künftigen Gatsby-Versionen.
Netlify Forms funktioniert nur auf Netlify; Gatsby Functions braucht passende Hosts. Eine externe action-URL ist unabhängig davon, wo Dateien ausgeliefert werden.
Native Host-Formulare lassen Archive beim Umzug zurück. Nachrichten im Projektpostfach bleiben auch beim Hostwechsel, samt früheren Anfragen.
FAQ
Nicht allein. gatsby build erzeugt HTML, CSS und JS ohne laufenden POST-Empfänger. Du brauchst etwas außerhalb des Builds: eine Gatsby Function auf passendem Host, einen externen Dienst oder deine API.
Es funktioniert, macht aus der statischen Website aber eine mit Laufzeit. Genau das könntest du vermeiden. Versand, Spamfilter und Speicherung schreibst du ebenfalls selbst, und nur Hosts mit Gatsby Functions unterstützen das. Für ein Kontaktformular ist das viel Aufwand.
Nein. Keine Konfiguration ist nötig. Es ist eine React-Komponente mit form und Submit-Handler: kein Plugin, keine GraphQL-Abfrage, kein Eintrag in gatsby-config.js.
Das entscheidest du. Viele Gatsby-Websites laufen gut. Das Framework hat aber an Dynamik verloren. Portable Teile werden sich später auszahlen. Ein Formular aus Markup und Ziel-URL gehört dazu.
verwandt
Formulare und echte E-Mail-Adresse vereint, mit Benachrichtigungen in deinen Tools. Starte mit einem kostenlosen Konto.
Kostenloses Formular erstellenKeine Kreditkarte nötig. Free umfasst ein Projekt und 50 Formularnachrichten pro Monat.