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

Chr*_*nel 2 node.js postmark firebase nodemailer google-cloud-functions

我希望在使用firebase云功能创建用户后使用nodemail和邮戳发送邮件.

我按照本教程:Dave Martin的教程链接

但不断收到此错误:

发送欢迎电子邮件时出错:{ 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))
}
Run Code Online (Sandbox Code Playgroud)

我的postmark.key已经在firebase配置中设置了... API告诉我问题是我用来发送邮件信息的格式..我怎么能修复它?

更新

我还尝试修改mailOptions如下,仍然是同样的错误:

    const mailOptions = {
        from: 'test@test.com',
        to: user.email,
        subject: 'Welcome!',
        textBody: 'hello'
    }
Run Code Online (Sandbox Code Playgroud)

Chr*_*nel 6

决定只使用邮戳文件从头开始重新开始(顺便说一句,这真的很棒).

以下是从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))
}
Run Code Online (Sandbox Code Playgroud)

而已.

无需下载nodemailer也无需使用传输器.