无Google Workspace时,如何用Firebase云函数自动发送邮件邀请?
无需Google Workspace的Firebase云函数发邮件方案
下面提供几种可行的方案,适配你自己的域名邮箱需求:
1. 直接配置自定义SMTP发送
你可以直接用自己域名邮箱的SMTP服务替换原示例中的Gmail配置,步骤如下:
- 先确认你的域名邮箱的SMTP信息:包括服务器地址(比如
smtp.www.had-felix.com,具体看域名服务商提供的文档)、端口(通常是465或587)、邮箱密码(如果有二次验证则用应用密码) - 修改原云函数中的邮件发送配置,以nodemailer为例:
const nodemailer = require('nodemailer'); const functions = require('firebase-functions'); // 读取Cloud环境变量 const smtpConfig = functions.config().smtp; // 创建SMTP transporter const transporter = nodemailer.createTransport({ host: smtpConfig.host, port: parseInt(smtpConfig.port), secure: parseInt(smtpConfig.port) === 465, // 465端口启用SSL,587用TLS auth: { user: smtpConfig.email, pass: smtpConfig.password } }); - 设置对应的环境变量:
firebase functions:config:set smtp.email="admin-super@www.had-felix.com" smtp.password="你的邮箱密码" smtp.host="你的SMTP服务器地址" smtp.port="465"
2. 使用Firebase官方Trigger Email扩展
这是更省心的方案,官方扩展已经封装了邮件发送逻辑:
- 在Firebase控制台的「扩展」市场找到「Trigger Email」扩展并安装
- 安装过程中,配置项里选择「Custom SMTP」,填入你的域名邮箱SMTP服务器、端口、邮箱地址和密码
- 之后只需要往指定的Firestore集合或Realtime Database节点写入邮件数据,扩展就会自动触发发送,不用自己编写复杂的发送代码
3. 借助第三方邮件服务(如SendGrid、Mailgun)
这类服务提供免费额度,适合小流量场景,且能提升邮件送达率:
- 注册第三方服务(比如SendGrid),完成发件域名验证(确保你的
www.had-felix.com域名被验证) - 获取服务提供的API密钥,设置到Firebase环境变量:
firebase functions:config:set sendgrid.key="你的SendGrid API密钥" - 在云函数中调用服务的SDK发送邮件,示例代码:
const sgMail = require('@sendgrid/mail'); const functions = require('firebase-functions'); sgMail.setApiKey(functions.config().sendgrid.key); exports.sendConfirmationEmail = functions.auth.user().onCreate((user) => { const msg = { to: user.email, from: 'admin-super@www.had-felix.com', subject: '注册确认', text: '感谢你注册我们的服务!' }; return sgMail.send(msg); });
内容的提问来源于stack exchange,提问作者Wege
相关产品推荐
相关产品推荐

