我正在尝试使用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 :)",
});
}
});
};