发送带有应用密码的电子邮件仍会导致EAUTH错误

时间:2020-06-03 16:56:08

标签: node.js smtp nodemailer

我正在尝试使用netlify-lambda设置无服务器后端。一切都能通过Mailtrap正常工作,所以我知道它正在工作,但是我只是无法使用gmail SMPT服务器将包含从客户端获取的表单数据的电子邮件发送到gmail。

我在Google上使用2FA,因此它告诉我生成一个应用密码,我这样做了,然后用16位数字的应用密码替换了我的gmail密码。但是我仍然遇到该错误,并且不断告诉我要生成一个新错误。为了确定我做了两次,但是我不断收到此错误:

code: 'EAUTH',
response: '534-5.7.9 Application-specific password required. Learn more at\n' +
    '534 5.7.9  https://support.google.com/mail/?p=InvalidSecondFactor cx13sm63090edb.20 - gsmtp',      responseCode: 534,
command: 'AUTH PLAIN'

我的后端。

require("dotenv").config();
const nodemailer = require("nodemailer");
const capitalize = require("capitalize");

exports.handler = function (event, context, callback) {
  const formData = JSON.parse(event.body);

  try {
    if (formData.name === undefined && formData.length < 2)
      throw "Navne feltet er ikke gyldigt";
    if (formData.email === undefined) throw "Email er ikke gyldig";
    if (formData.message === undefined || formData.message.length < 80)
      throw "Beskeden er alt for kort";
  } catch (error) {
    callback(error, {
      statusCode: 400,
      body: "Informationer er ikke gyldige",
    });
  }

  const message = {
    from: formData.email,
    to: process.env.EMAIL,
    subject: capitalize.words(formData.name) + " | " + process.env.WEBSITE,
    html: `
        <h4 style="margin:0 0 3px 0;">Navn: ${capitalize.words(
          formData.name
        )}</h4>
        ${formData.phone && `<h4 style="margin:0;">Tlf: ${formData.phone}</h4>`}
        <p>${formData.message}</p>
      `,
  };

  let transport = nodemailer.createTransport({
    service: "gmail",
    auth: {
      user: process.env.USER,
      pass: process.env.PASS,
    },
  });

  transport.sendMail(message, (err) => {
    if (err) {
      callback(err, {
        statusCode: 500,
        body: "Problemer med mail host",
      });
    } else {
      callback(null, {
        statusCode: 200,
        body: "Mail var sendt :)",
      });
    }
  });
};

0 个答案:

没有答案