如何使用 Firebase 云功能发送自定义电子邮件
How to send customize e-mail with Firebase cloud functions
我想在使用 firebase 云功能创建用户后使用 nodemail 和邮戳发送邮件。
我遵循了这个教程:Tutorial link 来自 Dave Martin
但不断出现此错误:
There was an error while sending the welcome email: { status: 422, message: 'Zero recipients specified', code: 300 }
这是我从云函数发送邮件的代码:
//Mail
const nodemailer = require('nodemailer')
const postmarkTransport = require('nodemailer-postmark-transport')
// Google Cloud environment variable used:
// firebase functions:config:set postmark.key="API-KEY-HERE"
const postmarkKey = functions.config().postmark.key
const mailTransport = nodemailer.createTransport(postmarkTransport({
auth: {
apiKey: postmarkKey
}
}))
exports.OnUserCreation = functions.auth.user().onCreate((user) =>
{
console.log("user created: " + user.data.uid);
console.log("user email: " + user.data.email);
sendEmail(user);
})
function sendEmail(user)
{
// Send welcome email to new users
const mailOptions =
{
from: '"test" <test@test.com>',
to: user.email,
subject: 'Welcome!',
html: 'hello'
}
// Process the sending of this email via nodemailer
return mailTransport.sendMail(mailOptions)
.then(() => console.log('Welcome confirmation email sent'))
.catch((error) => console.error('There was an error while sending the welcome email:', error))
}
我的 postmark.key 已经在 firebase 配置中设置... API 告诉我问题是我用来发送邮件信息的格式。我该如何解决它?
更新
我也试过如下修改mailOptions,还是一样的错误:
const mailOptions = {
from: 'test@test.com',
to: user.email,
subject: 'Welcome!',
textBody: 'hello'
}
决定仅按照邮戳文档从头开始(顺便说一下,这真的很好)。
下面是从 firebase 云函数中的事件发送邮件的非常简单的步骤:
1- 下载包:
运行: npm install postmark
2- 注册到邮戳
注册PostMark
- 然后找到你的 API 钥匙。
3-设置firebase环境配置:
运行 : firebase functions:config:set postmark.key="API-KEY-HERE"
4 index.js待添加代码:
//Mail
const postmark = require('postmark')
const postmarkKey = functions.config().postmark.key;
const mailerClient = new postmark.ServerClient(postmarkKey);
exports.OnUserCreation = functions.auth.user().onCreate((user) => {
console.log("user created: " + user.data.uid);
console.log("user email: " + user.data.email);
return sendEmail(user);
})
// Send welcome email to new users
function sendEmail(user) {
const mailOptions = {
"From": "XYZ@YOURDOMAIN.com",
"To": user.data.email,
"Subject": "Test",
"TextBody": "Hello from Postmark!"
}
return mailerClient.sendEmail(mailOptions)
.then(() => console.log('Welcome confirmation email sent'))
.catch((error) => console.error('There was an error while sending the welcome email:', error))
}
就是这样。
无需下载 nodemailer,也无需使用传输器。
我想在使用 firebase 云功能创建用户后使用 nodemail 和邮戳发送邮件。
我遵循了这个教程:Tutorial link 来自 Dave Martin
但不断出现此错误:
There was an error while sending the welcome email: { status: 422, message: 'Zero recipients specified', code: 300 }
这是我从云函数发送邮件的代码:
//Mail
const nodemailer = require('nodemailer')
const postmarkTransport = require('nodemailer-postmark-transport')
// Google Cloud environment variable used:
// firebase functions:config:set postmark.key="API-KEY-HERE"
const postmarkKey = functions.config().postmark.key
const mailTransport = nodemailer.createTransport(postmarkTransport({
auth: {
apiKey: postmarkKey
}
}))
exports.OnUserCreation = functions.auth.user().onCreate((user) =>
{
console.log("user created: " + user.data.uid);
console.log("user email: " + user.data.email);
sendEmail(user);
})
function sendEmail(user)
{
// Send welcome email to new users
const mailOptions =
{
from: '"test" <test@test.com>',
to: user.email,
subject: 'Welcome!',
html: 'hello'
}
// Process the sending of this email via nodemailer
return mailTransport.sendMail(mailOptions)
.then(() => console.log('Welcome confirmation email sent'))
.catch((error) => console.error('There was an error while sending the welcome email:', error))
}
我的 postmark.key 已经在 firebase 配置中设置... API 告诉我问题是我用来发送邮件信息的格式。我该如何解决它?
更新
我也试过如下修改mailOptions,还是一样的错误:
const mailOptions = {
from: 'test@test.com',
to: user.email,
subject: 'Welcome!',
textBody: 'hello'
}
决定仅按照邮戳文档从头开始(顺便说一下,这真的很好)。
下面是从 firebase 云函数中的事件发送邮件的非常简单的步骤:
1- 下载包:
运行: npm install postmark
2- 注册到邮戳
注册PostMark - 然后找到你的 API 钥匙。
3-设置firebase环境配置:
运行 : firebase functions:config:set postmark.key="API-KEY-HERE"
4 index.js待添加代码:
//Mail
const postmark = require('postmark')
const postmarkKey = functions.config().postmark.key;
const mailerClient = new postmark.ServerClient(postmarkKey);
exports.OnUserCreation = functions.auth.user().onCreate((user) => {
console.log("user created: " + user.data.uid);
console.log("user email: " + user.data.email);
return sendEmail(user);
})
// Send welcome email to new users
function sendEmail(user) {
const mailOptions = {
"From": "XYZ@YOURDOMAIN.com",
"To": user.data.email,
"Subject": "Test",
"TextBody": "Hello from Postmark!"
}
return mailerClient.sendEmail(mailOptions)
.then(() => console.log('Welcome confirmation email sent'))
.catch((error) => console.error('There was an error while sending the welcome email:', error))
}
就是这样。
无需下载 nodemailer,也无需使用传输器。