Vue (@frontmail/vue)
npm install @frontmail/vueBenötigt Vue 3.3+. Funktioniert mit Nuxt im clientseitigen Code.
import { createApp } from 'vue';import { Frontmail } from '@frontmail/vue';import App from './App.vue';
createApp(App) .use(Frontmail, { publicKey: 'pk_4f2a…', blockHeadless: true }) .mount('#app');Die Optionen sind dieselben wie bei init(). Das Plugin
registriert außerdem <FrontmailForm> global.
FrontmailForm
Abschnitt betitelt „FrontmailForm“<template> <FrontmailForm service-id="svc_01J9…" template-id="tpl_contact" turnstile-site-key="YOUR_TURNSTILE_SITE_KEY" @success="(r) => console.log(r.status)" @error="(e) => console.error(e.code)" v-slot="{ status, error }" > <input name="name" required /> <input name="email" type="email" required /> <textarea name="message" required /> <button :disabled="status === 'sending'">Senden</button> <p v-if="status === 'sent'">Vielen Dank!</p> <p v-else-if="status === 'held'">Erhalten – wird in Kürze zugestellt.</p> <p v-if="error" role="alert">{{ error.message }}</p> </FrontmailForm></template>Props: serviceId, templateId, turnstileSiteKey, turnstileOptions, locale, sendOptions,
resetOnSuccess (Standard true). Events: success, error, status. Der Default-Slot erhält
{ status, error, result }.
locale (z. B. locale="de") versendet die E-Mail in dieser Sprache der Vorlage
(als Formularfeld fm_locale; ein Feld fm_locale im Formular hat Vorrang). result.locale ist die
verwendete Sprache.
turnstileSiteKey ist der Site-Key Ihres eigenen Turnstile-Widgets (im Dashboard unter
Sicherheit → Bot-Schutz (Turnstile)) – siehe Cloudflare Turnstile.
Lassen Sie ihn weg, wenn die Vorlage kein CAPTCHA verlangt.
useSendEmail
Abschnitt betitelt „useSendEmail“<script setup lang="ts">import { ref } from 'vue';import { useSendEmail } from '@frontmail/vue';
const email = ref('');const { send, status, error } = useSendEmail('svc_01J9…', 'tpl_newsletter');</script>
<template> <form @submit.prevent="send({ email })"> <input v-model="email" type="email" /> <button :disabled="status === 'sending'">Abonnieren</button> <p v-if="status === 'error'">{{ error?.message }}</p> </form></template>status, error und result sind schreibgeschützte Refs. serviceId und templateId dürfen Refs
oder Getter sein. send und sendForm nehmen Optionen als zweites Argument, z. B.
send({ email }, { locale: 'de' }).
useFrontmail
Abschnitt betitelt „useFrontmail“useFrontmail() gibt den vom Plugin bereitgestellten Client zurück (für getStatus und
Low-Level-Aufrufe).
Beispielprojekt: examples/vue.