Vue (@frontmail/vue)
npm install @frontmail/vueRequiere Vue 3.3+. Funciona con Nuxt en el código del lado del cliente.
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');Las opciones son las mismas que las de init(). El plugin también
registra <FrontmailForm> de forma global.
FrontmailForm
Sección titulada «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'">Enviar</button> <p v-if="status === 'sent'">¡Gracias!</p> <p v-else-if="status === 'held'">Recibido: lo entregaremos en breve.</p> <p v-if="error" role="alert">{{ error.message }}</p> </FrontmailForm></template>Props: serviceId, templateId, turnstileSiteKey, turnstileOptions, locale, sendOptions,
resetOnSuccess (por defecto true). Eventos: success, error, status. El slot por defecto
recibe { status, error, result }.
locale (p. ej. locale="de") envía el correo en ese idioma de la plantilla
(como campo de formulario fm_locale; un campo fm_locale dentro del formulario tiene prioridad).
result.locale es el idioma usado.
turnstileSiteKey es la site key de tu propio widget de Turnstile (Seguridad → Protección
contra bots (Turnstile) en el panel): consulta Cloudflare Turnstile.
Omítela si la plantilla no exige CAPTCHA.
useSendEmail
Sección titulada «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'">Suscribirme</button> <p v-if="status === 'error'">{{ error?.message }}</p> </form></template>status, error y result son refs de solo lectura. serviceId y templateId pueden ser refs o
getters. send y sendForm aceptan opciones como segundo argumento, p. ej.
send({ email }, { locale: 'de' }).
useFrontmail
Sección titulada «useFrontmail»useFrontmail() devuelve el cliente que proporciona el plugin (para getStatus y llamadas de bajo
nivel).
Proyecto de ejemplo: examples/vue.