我的网站是托管在火基地,我希望发送一封电子邮件从喜欢no-reply@mydomain.com的收件人。我是被迫创建这封电子邮件并为SMTP连接提供登录信息,还是有一种方式可以发送邮件而不实际创建它(没有AUTH凭据),有点像PHP中的mail()。
目前,我正在用GMail和nodemailer发送邮件。
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');
}
});
});有出路吗?谢谢你帮忙。
发布于 2018-11-26 13:14:09
使用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。
有一个每月12.000封免费邮件的“慷慨”免费计划,参见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);
});
});请注意,您需要在“火焰”或“烈火”的价格计划。
事实上,免费的“火花”计划“只允许向谷歌拥有的服务提出出站网络请求”。参见https://firebase.google.com/pricing/ (将鼠标悬停在“云函数”标题后面的问号上)
因为Sendgrid不是谷歌拥有的服务,所以你需要切换到“火焰”或“火焰”计划。
https://stackoverflow.com/questions/53481773
复制相似问题