在 Nuxt 中发送电子邮件 我如何在 SaaS 样板中处理电子邮件
Dec 01, 2024 am 11:45 AM如果您正在 Nuxt 3 中构建任何严肃的东西,您将需要发送电子邮件。
这是我的设置,可让您在 Resend、SendGrid 或任何其他提供程序之间切换,而无需重写代码。
设置
- AdonisJS Mail(我让它在 AdonisJS 之外工作,因此它可以与任何 JS 后端一起工作)
- 用于模板的 Vue 电子邮件
- 可与任何电子邮件提供商合作(Resend、AWS SES、Mailgun、Sparkpost、Brevo、自定义 SMTP)
基本配置
const generateMailer = async () => { const mailer = await generateMailer({ default: "resend", from: { address: "hi@saas-boilerplate.dev", name: "SaaS Boilerplate", }, mailers: { resend: transports.resend({ key: process.env.RESEND_API_KEY || "", baseUrl: "https://api.resend.com", }), // Easy to add more providers! sendgrid: transports.sendgrid({ key: process.env.SENDGRID_API_KEY || "", }) }, }); return mailer; };
登录后复制
使用 Vue Email 的电子邮件模板
这是一个简单的魔术链接电子邮件模板:
<template> <Html> <Body> <Container> <Heading>Sign In to Your Account</Heading> <Text>Hi {{ username }},</Text> <Text>Click the button below to sign in:</Text> <Section> <Button :href="signInLink">Sign In</Button> </Section> <Text> Or copy this link: <Link :href="signInLink">{{ signInLink }}</Link> </Text> <Hr /> <Text>This link expires in 1 hour.</Text> </Container> </Body> </Html> </template> <script setup lang="ts"> import { Body, Button, Container, Heading, Html, Link, Section, Text, Hr } from "@vue-email/components"; interface Props { username?: string; signInLink?: string; } withDefaults(defineProps<Props>(), { username: "User", signInLink: "https://app.example.com/sign-in", }); </script>
登录后复制
发送电子邮件
import MagicLinkSignIn from "~/emails/MagicLinkSignIn.vue"; const mailer = await getMailer(); await mailer.send(async (message) => { message .to(email) .subject("Magic Link Sign In") .html( await render(MagicLinkSignIn, { username: user?.name, signInLink: url, }) ); });
登录后复制
AdonisJS Mail 的炫酷功能
AdonisJS Mail 附带了大量我们可以使用的强大功能:
- 多种传输支持:只需一行代码即可在电子邮件提供商之间切换
- 日历活动:将日历邀请附加到您的电子邮件
- 文件附件:轻松附加文件、流或缓冲区
- HTML/文本模板:支持 HTML 和纯文本电子邮件
例如,附加日历邀请非常简单:
message.icalEvent((calendar) => { calendar.createEvent({ summary: 'Team Meeting', start: DateTime.local().plus({ minutes: 30 }), end: DateTime.local().plus({ minutes: 60 }), }) });
登录后复制
为什么这个效果很好
- 随时切换提供商
- 在 Vue 中编写模板
- 易于测试
- 任何 JS 后端中 AdonisJS Mail 的所有功能
自己尝试一下
想了解更多有关 AdonisJS Mail 的功能吗?查看他们的详细文档。
此电子邮件设置是我的 Nuxt SaaS 样板的一部分。
如果您正在构建 SaaS,请检查一下 - 它配备了使用 tRPC 的类型安全 API、企业级 RBAC(基于角色的访问控制)以及身份验证、团队管理和计费等生产就绪功能.
每个功能的构建都与此电子邮件系统一样注重开发人员体验。
以上是在 Nuxt 中发送电子邮件 我如何在 SaaS 样板中处理电子邮件的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)