如何配置Firebase Trigger-Mail扩展与Cloud Functions?
Trigger-Mail 扩展与Cloud Functions 配置分步实现方法
1. 前期准备
- 确保已创建Firebase项目,启用Cloud Functions和Cloud Firestore服务
- 本地安装Firebase CLI:
npm install -g firebase-tools - 登录Firebase账号并关联项目:
firebase login firebase use --add - 初始化Functions环境:
firebase init functions # 按需选择JavaScript/TypeScript,可选启用ESLint
2. 安装并配置Trigger-Mail扩展
- 进入Firebase控制台→扩展→扩展市场,搜索Trigger Email并安装
- 配置核心参数:
- SMTP连接信息:填写发送邮箱的SMTP服务器(如Gmail的
smtp.gmail.com)、端口(587)、用户名(邮箱地址)、密码(Gmail需使用应用专用密码) - Firestore集合:指定触发邮件的集合名(默认
mail,可自定义) - 发件人显示名称:设置邮件的发件人显示名称
- SMTP连接信息:填写发送邮箱的SMTP服务器(如Gmail的
- 安装完成后,扩展会自动配置Firestore安全规则,允许Functions写入邮件触发文档
3. 编写Cloud Functions触发逻辑
以用户注册后发送欢迎邮件为例,在functions/index.js中添加以下代码:
const functions = require("firebase-functions"); const admin = require("firebase-admin"); admin.initializeApp(); // 用户注册触发欢迎邮件 exports.sendWelcomeEmail = functions.auth.user().onCreate(async (user) => { const mailData = { to: user.email, message: { subject: "欢迎加入我们", html: `<p>您好 ${user.displayName || "用户"},感谢您的注册!</p>`, }, }; // 写入Firestore触发邮件发送 await admin.firestore().collection("mail").add(mailData); functions.logger.info("欢迎邮件触发请求已提交"); });
如果需要通过HTTP请求触发邮件,可编写HTTP可调用函数:
exports.sendCustomEmail = functions.https.onCall(async (data, context) => { // 可选:验证用户权限 if (!context.auth) { throw new functions.https.HttpsError("unauthenticated", "需登录后操作"); } const mailData = { to: data.to, message: { subject: data.subject, text: data.text, }, }; await admin.firestore().collection("mail").add(mailData); return { status: "邮件触发请求已提交" }; });
4. 部署与测试
- 部署Functions:
firebase deploy --only functions - 测试触发逻辑:
- Auth触发器:创建新用户,检查Firestore的
mail集合是否新增文档,确认邮箱收到邮件 - HTTP触发器:通过Firebase CLI或客户端调用函数,传入邮件参数,验证发送状态
- Auth触发器:创建新用户,检查Firestore的
- 问题排查:
- 查看扩展日志:Firebase控制台→扩展→Trigger Email→日志
- 查看Functions日志:
firebase functions:log - 确认Firestore规则允许Functions写入
mail集合
内容的提问来源于stack exchange,提问作者Delwinn
相关产品推荐
相关产品推荐

