Sri*_*m R 8 node.js firebase nodemailer firebase-realtime-database google-cloud-functions
我在Firebase Cloud Functions中使用nodemailer在将数据添加到实时数据库时发送邮件.
码:
const functions = require('firebase-functions');
const nodemailer = require('nodemailer');
const gmailEmail = 'myemail.in@gmail.com';
const gmailPassword = 'mypassword';
const mailTransport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: gmailEmail,
password: gmailPassword
}
});
const APP_NAME = 'ABC In'
exports.salonCreatedAccount = functions.database.instance('abc-
in').ref('/abc/{def}').onCreate(event => {
const snapshot = event.data;
const val = snapshot.val()
console.log(val);
const email = val.email;
const displayname = val.name;
return sendconfirmationEmail(email, displayname);
});
function sendconfirmationEmail(email, displayName){
const mailOptions = {
from: `${APP_NAME} <abc.in@gmail.com>`,
to: email
};
mailOptions.subject = `Welcome to ${APP_NAME}!`;
mailOptions.text = `Some Text`;
return mailTransport.sendMail(mailOptions).then(() => {
console.log(`New welcome mail sent to ${email}`);
});
}
Run Code Online (Sandbox Code Playgroud)
我在执行时遇到以下错误.注意:我确保电子邮件和密码是正确的,并且没有错误.
错误:
Error: Missing credentials for "PLAIN"
at SMTPConnection._formatError (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:591:19)
at SMTPConnection.login (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:340:38)
at connection.connect (/user_code/node_modules/nodemailer/lib/smtp-transport/index.js:270:32)
at SMTPConnection.once (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:188:17)
at SMTPConnection.g (events.js:292:16)
at emitNone (events.js:86:13)
at SMTPConnection.emit (events.js:185:7)
at SMTPConnection._actionEHLO (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:1113:14)
at SMTPConnection._processResponse (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:747:20)
at SMTPConnection._onData (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:543:14)
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
重命名password
为pass
inauth
对象。例如
const mailTransport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: gmailEmail,
pass: gmailPassword
}
});
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,然后就这样解决了。
通过nodemailer
深入了解记录此消息的位置的代码发现,代码如下所示。
if (this._auth.user && this._auth.pass) { // this condition <---
this._auth.credentials = {
user: this._auth.user,
pass: this._auth.pass
};
} else {
return callback(this._formatError('Missing credentials for "' + this._authMethod + '"', 'EAUTH', false, 'API'));
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
根据官方文档,GMail 在某些特殊情况下可能会禁用基本身份验证。
为了防止出现登录问题,您应该使用 OAuth2 或使用其他交付提供商,最好是专用交付提供商。
在这里阅读更多信息: https: //nodemailer.com/usage/using-gmail/
归档时间: |
|
查看次数: |
8521 次 |
最近记录: |