Nodemailer SMTP 是否在 azure 函数中工作?
Does Nodemailer SMTP work within azure functions?
我正在尝试 运行 Azure 函数应用程序中的 nodemailer 服务,但它一直抛出 AUTH 错误。下面是我的代码:
require("dotenv").config();
const nodemailer = require("nodemailer");
const getMailIDs = require("./getMailIDs");
module.exports = async function mailSender() {
let transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 465,
secure: true,
service: "gmail",
auth: {
user: process.env.EMAIL,
pass: process.env.PASSWORD,
},
});
let mailIDs = await getMailIDs();
for (i = 0; i < mailIDs.length; i++) {
await transporter.sendMail({
from: "abc@gmail.com",
to: `${mailIDs[i]}`,
subject: "Test Mail",
text: {
path: `emailBody.txt`,
},
});
}
};
这是抛出的错误:
Error: Missing credentials for "PLAIN"
at SMTPConnection._formatError (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:784:19)
at SMTPConnection.login (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:438:38)
at C:\Projects\azure\node_modules\nodemailer\lib\smtp-transport\index.js:271:32
at SMTPConnection.<anonymous> (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:209:17)
at Object.onceWrapper (events.js:299:28)
at SMTPConnection.emit (events.js:210:5)
at SMTPConnection._actionEHLO (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:1319:14)
at SMTPConnection._processResponse (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:947:20)
at SMTPConnection._onData (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:749:14)
at TLSSocket.SMTPConnection._onSocketData (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:189:44) {
code: 'EAUTH',
command: 'API'
}
当我运行这个脚本文件在本地单独执行时执行。但是当我从 azure 函数应用程序的 index.js 文件调用它时会抛出错误。我不确定 azure 函数应用程序是否必须使用 google api/ OAUTH。
您共享的错误代码表明 NodeMailers 无法验证您的身份。
code: 'EAUTH', command: 'API'
发现问题:
auth: {
user: process.env.EMAIL,
pass: process.env.PASSWORD,
},
使用的身份验证变量是环境变量。
这在 运行 本地时有效,因为您必须有一个包含这些变量的 .env 文件托管在本地服务器上。
解决方案:
您需要在 "Configuration"(设置面板)中的 "Application Settings" 下的 as "New Application Settings" 下添加所有环境变量。
文档参考 - https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings?tabs=portal
添加以下值:
Name - EMAIL , value - <youremail>
Name - PASSORD, value - <password>
这应该可以解决身份验证问题。
我正在尝试 运行 Azure 函数应用程序中的 nodemailer 服务,但它一直抛出 AUTH 错误。下面是我的代码:
require("dotenv").config();
const nodemailer = require("nodemailer");
const getMailIDs = require("./getMailIDs");
module.exports = async function mailSender() {
let transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 465,
secure: true,
service: "gmail",
auth: {
user: process.env.EMAIL,
pass: process.env.PASSWORD,
},
});
let mailIDs = await getMailIDs();
for (i = 0; i < mailIDs.length; i++) {
await transporter.sendMail({
from: "abc@gmail.com",
to: `${mailIDs[i]}`,
subject: "Test Mail",
text: {
path: `emailBody.txt`,
},
});
}
};
这是抛出的错误:
Error: Missing credentials for "PLAIN"
at SMTPConnection._formatError (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:784:19)
at SMTPConnection.login (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:438:38)
at C:\Projects\azure\node_modules\nodemailer\lib\smtp-transport\index.js:271:32
at SMTPConnection.<anonymous> (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:209:17)
at Object.onceWrapper (events.js:299:28)
at SMTPConnection.emit (events.js:210:5)
at SMTPConnection._actionEHLO (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:1319:14)
at SMTPConnection._processResponse (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:947:20)
at SMTPConnection._onData (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:749:14)
at TLSSocket.SMTPConnection._onSocketData (C:\Projects\azure\node_modules\nodemailer\lib\smtp-connection\index.js:189:44) {
code: 'EAUTH',
command: 'API'
}
当我运行这个脚本文件在本地单独执行时执行。但是当我从 azure 函数应用程序的 index.js 文件调用它时会抛出错误。我不确定 azure 函数应用程序是否必须使用 google api/ OAUTH。
您共享的错误代码表明 NodeMailers 无法验证您的身份。
code: 'EAUTH', command: 'API'
发现问题:auth: {
user: process.env.EMAIL,
pass: process.env.PASSWORD,
},
使用的身份验证变量是环境变量。 这在 运行 本地时有效,因为您必须有一个包含这些变量的 .env 文件托管在本地服务器上。
解决方案:
您需要在 "Configuration"(设置面板)中的 "Application Settings" 下的 as "New Application Settings" 下添加所有环境变量。
文档参考 - https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings?tabs=portal
添加以下值:
Name - EMAIL , value - <youremail>
Name - PASSORD, value - <password>
这应该可以解决身份验证问题。