如何使用Firebase云功能发送自定义电子邮件



我想在使用firebase云函数创建用户后,使用nodemail和postmark发送邮件。

我遵循了这个教程:Dave Martin 的教程链接

但不断出现此错误:

发送欢迎电子邮件时出错:{状态:422,消息:"指定零个收件人",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 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,也无需使用传输程序。

相关内容

  • 没有找到相关文章

最新更新