簡體   English   中英

Nodemailer SMTP 是否在 azure 函數中工作?

[英]Does Nodemailer SMTP work within azure functions?

我正在嘗試在 azure function 應用程序中運行 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 function 應用程序的 index.js 文件調用它時會引發錯誤。 我不確定 azure function 應用程序是否必須使用 google api/OAUTH。


您共享的錯誤代碼表明 NodeMailers 無法驗證您的身份。
 code: 'EAUTH', command: 'API'
發現問題:
 auth: { user: process.env.EMAIL, pass: process.env.PASSWORD, },

使用的身份驗證變量是環境變量。 這在本地運行時有效,因為您必須在本地服務器上擁有一個包含這些變量的 .env 文件。


解決方案:
您需要在“配置”(設置面板)的“應用程序設置”下將所有環境變量添加為“新應用程序設置”。

文檔參考 - 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>



這應該可以解決身份驗證問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM