Nodemailer 使用服务帐户为 firebase 应用程序发送邮件
Nodemail to send mail for firebase app with service account
我在尝试使用 Nodemailer 发送邮件时收到以下消息:
'535-5.7.8 Username and Password not accepted.
Learn more at\n535 5.7.8 https://support.google.com/mail/?p=BadCredentials y42sm13399804wrc.51 - gsmtp',
responseCode: 535,
command: 'AUTH XOAUTH2' }
我正在使用来自 firebase 项目的服务帐户,并已授予对 GMail API 的访问权限。但是 nodemailer docs for 2LO is really scarce 所以我想知道是否有人可以帮助我确定我是否使用了正确的凭据?
user (functions.config().gmail.user) : myfirebaseproject@appspot.gserviceaccount.com
-
function sendContactMail(contactName, contactEmail, contactDate, contactText) {
// Create transport
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
type: 'OAuth2',
user: functions.config().gmail.user,
serviceClient: functions.config().gmail.client_id,
privateKey: functions.config().gmail.private_key
//accessToken: 'ya29.Xx_XX0xxxxx-xX0X0XxXXxXxXXXxX0x',
//expires: 1484314697598
}
});
// Mail Options
let mailOptions = {
from: `"${APP_NAME}" <${SENDER}>`,
replyTo: `${contactEmail}`,
to: 'recipient@gmail.com',
subject: `Nouveau contact photo de ${contactName}`,
html: `Nom : ${contactName}<br/>
Email : ${contactEmail}<br/>
Date du mariage : ${contactDate}<br/>
Message : ${contactText}`,
disableFileAccess: true,
disableUrlAccess:true
};
// Send Mail
return transporter.sendMail(mailOptions);
}
我有云功能和这段代码,它工作正常。试试这个
mailTransport = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: ${email},
pass: ${password}
}
});
您的账户是否启用了两步验证?在这种情况下,在 https://myaccount.google.com/apppasswords 上生成应用密码并使用它代替您的普通密码:
const mailTransport = nodemailer.createTransport(
`smtps://user@gmail.com:generatedAppPassword@smtp.gmail.com`);
我在尝试使用 Nodemailer 发送邮件时收到以下消息:
'535-5.7.8 Username and Password not accepted.
Learn more at\n535 5.7.8 https://support.google.com/mail/?p=BadCredentials y42sm13399804wrc.51 - gsmtp',
responseCode: 535,
command: 'AUTH XOAUTH2' }
我正在使用来自 firebase 项目的服务帐户,并已授予对 GMail API 的访问权限。但是 nodemailer docs for 2LO is really scarce 所以我想知道是否有人可以帮助我确定我是否使用了正确的凭据?
user (functions.config().gmail.user) : myfirebaseproject@appspot.gserviceaccount.com
-
function sendContactMail(contactName, contactEmail, contactDate, contactText) {
// Create transport
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
type: 'OAuth2',
user: functions.config().gmail.user,
serviceClient: functions.config().gmail.client_id,
privateKey: functions.config().gmail.private_key
//accessToken: 'ya29.Xx_XX0xxxxx-xX0X0XxXXxXxXXXxX0x',
//expires: 1484314697598
}
});
// Mail Options
let mailOptions = {
from: `"${APP_NAME}" <${SENDER}>`,
replyTo: `${contactEmail}`,
to: 'recipient@gmail.com',
subject: `Nouveau contact photo de ${contactName}`,
html: `Nom : ${contactName}<br/>
Email : ${contactEmail}<br/>
Date du mariage : ${contactDate}<br/>
Message : ${contactText}`,
disableFileAccess: true,
disableUrlAccess:true
};
// Send Mail
return transporter.sendMail(mailOptions);
}
我有云功能和这段代码,它工作正常。试试这个
mailTransport = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: ${email},
pass: ${password}
}
});
您的账户是否启用了两步验证?在这种情况下,在 https://myaccount.google.com/apppasswords 上生成应用密码并使用它代替您的普通密码:
const mailTransport = nodemailer.createTransport(
`smtps://user@gmail.com:generatedAppPassword@smtp.gmail.com`);