Here’s a full example from the playground demonstrating both client-side and server-side email sending:
Client-Side Component
Server-Side API Route
playground/app.vue
<script setup>import { ref } from 'vue'const { send, sending, error, lastMessageId } = useLettermint()const emailForm = ref({ from: '[email protected]', to: '[email protected]', subject: 'Test Email from Nuxt Lettermint Module', text: 'This is a test email sent from the Nuxt Lettermint module playground.', html: '<h1>Test Email</h1><p>This is a <strong>test email</strong> sent from the Nuxt Lettermint module.</p>', tag: 'nuxt'})const successMessage = ref('')const sendTestEmail = async () => { successMessage.value = '' const emailData = { from: emailForm.value.from, to: emailForm.value.to, subject: emailForm.value.subject, text: emailForm.value.text, html: emailForm.value.html } if (emailForm.value.tag && emailForm.value.tag.trim()) { emailData.tags = [emailForm.value.tag.trim()] } const result = await send(emailData) if (result.success) { successMessage.value = `Email sent successfully! Message ID: ${result.messageId}` }}</script><template> <div> <h1>Send Email Demo</h1> <button @click="sendTestEmail" :disabled="sending"> {{ sending ? 'Sending...' : 'Send Email' }} </button> <p v-if="error" class="error">Error: {{ error }}</p> <p v-if="successMessage" class="success">{{ successMessage }}</p> </div></template>
playground/server/api/server-email-demo.ts
import { defineEventHandler } from 'h3'import { sendEmail } from '#imports'export default defineEventHandler(async () => { try { const result = await sendEmail({ from: '[email protected]', to: '[email protected]', subject: 'Server-side Email from Nuxt Lettermint', text: 'This email was sent directly from the server using the Lettermint SDK.', html: '<h2>Server-side Email</h2><p>This email was sent directly from the server using the <strong>Lettermint SDK</strong>.</p>', tags: ['nuxt'] }) return { success: true, message: 'Email sent from server', messageId: result.message_id, status: result.status } } catch (error: unknown) { const err = error as any let errorMessage = 'Failed to send email from server' if (err?.responseBody?.message) { errorMessage = err.responseBody.message } else if (err?.message) { errorMessage = err.message } return { success: false, error: errorMessage } }})
Use [email protected] as the recipient for testing. This is a special testing address provided by Lettermint that accepts all emails without actually sending them.