Firebase云功能,无需AUTH即可发送邮件



我的网站托管在Firebase上,我希望从类似no-reply@mydomain.com的位置向收件人发送电子邮件。我是被迫创建这封电子邮件并提供SMTP连接的登录信息,还是有一种方法可以在不实际创建邮件的情况下发送邮件(没有AUTH凭据(,有点像PHP中的mail()

目前,我正在用nodemailer:从我的GMail发送邮件

var transporter = nodemailer.createTransport('smtps://USER@gmail.com:PASSWORD@smtp.gmail.com');
exports.sendMail = functions.https.onRequest((req, res) => {
var mailOptions = {
to: 'someone@gmail.com',
subject: 'Test Mail',
html: 'Testing the Mail'
}
transporter.sendMail(mailOptions, function (err, response) {
if (err) {
res.end('Mail not sent');
} else {
res.end('Mail sent');
}
});
});

有出路吗?谢谢你的帮助。

这可以通过Sendgrid轻松完成,如下所示。以下是node.js库文档:https://github.com/sendgrid/sendgrid-nodejs

Sendgrid是Firebase推荐的选项,请参阅https://github.com/firebase/functions-samples/tree/Node-8/quickstarts/email-users,这里说:

如果你计划发送大量电子邮件,你应该使用专业的电子邮件发送平台,如Sendgrid、Mailjet或Mailgun。

有一个"慷慨"的免费计划,每月有12000封免费电子邮件,请参阅https://console.cloud.google.com/marketplace/details/sendgrid-app/sendgrid-email

const functions = require('firebase-functions');
const admin = require('firebase-admin');
......
const sgMail = require('@sendgrid/mail');
const sengridkey =
'SG.............................................';
sgMail.setApiKey(sengridkey);
......
exports.sendMail = functions.https.onRequest((req, res) => {
const msg = {
to: 'someone@gmail.com',
from: 'originator@gmail.com',     //  <-  HERE, set the from
subject: 'Test Mail',
html: '<h1>Test Mail</h1>',
};
sgMail
.send(msg)
.then(() => {
res.status(200).send('Mail sent');
})
.catch(err => {
console.error('ERROR:', err);
res.status(500).send('Mail not sent: ' + err);
});
});

请注意,您需要参与"Flame"或"Blaze"Firebase定价计划。

事实上,免费的"Spark"计划"只允许向谷歌旗下的服务发出网络请求"。看见https://firebase.google.com/pricing/(将鼠标悬停在"云功能"标题后面的问号上(

由于Sendgrid不是谷歌旗下的服务,您需要切换到"Flame"或"Blaze"计划。

相关内容

  • 没有找到相关文章

最新更新