Я пытаюсь создать форму для связи с нами, используя Nodemailer, следуя инструкциям.Учебное пособие вставляет некоторый код с веб-сайта Nodemailer, но исходный код был обновлен с момента его записи.
Я вставляю последний код с веб-сайта, но получаю следующую ошибку консоли:
let info = await transporter.sendMail (mailOptions)
SyntaxError:await действителен только в асинхронной функции
Ниже приведен мой код app.js:
const express = require("express");
const bodyParser = require("body-parser");
const exphbs = require("express-handlebars");
const path = require("path");
const nodemailer = require("nodemailer");
const app = express();
// View engine setup
app.engine("handlebars", exphbs());
app.set("view engine", "handlebars");
// Static folder
app.use("/public", express.static(path.join(__dirname, "public")));
// Body Parser Middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.get("/", (req, res) => {
res.render("contact");
});
app.post("/send", (req, res) => {
const output = `
<p>You have a new contact request</p>
<h3>Contact Details</h3>
<ul>
<li>Name: ${req.body.name}</li>
<li>Company: ${req.body.company}</li>
<li>Email: ${req.body.email}</li>
<li>Phone: ${req.body.phone}</li>
</ul>
<h3>Message</h3>
<p>${req.body.message}</p>
`;
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@address.com',
pass: 'yourpassword'
}
});
const mailOptions = {
from: 'sender@email.com', // sender address
to: 'to@email.com', // list of receivers
subject: 'Subject of your email', // Subject line
html: '<p>Your html here</p>'// plain text body
};
let info = await transporter.sendMail(mailOptions)
console.log("Message sent: %s", info.messageId);
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
});
app.listen(3000, () => console.log("Server started..."));
А код, который я вставляю, находится на этой странице: https://nodemailer.com/about/
Почему я получаю эту ошибку и какие изменения нужно внести, чтобы код работал как положено?