无法正常工作"/>
Nodemailer 无法正常工作
我开发了一种方法来通过接收此代码来确认他的电子邮件地址,在本地主机上一切正常,但是当我在 Vercel 上部署时,确认电子邮件不会在请求后自动发送,有时你必须制作 3 或要求多了,但有时候你要求好几次他都不来
代码
require("dotenv").config();
const express = require("express");
const app = express();
const mongoose = require("mongoose");
app.use(express.json());
const cors = require("cors");
app.use(cors());
const port = 5007 || 3000;
const mongoUrl = process.env.MONGO_URL;
const bodyParser = require("body-parser");
app.use(bodyParser.json());
function connectToDatabase() {
mongoose
.connect(mongoUrl, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {})
.catch((error) => {});
}
const User = require("./schema_mongo");
app.post("/userConfirmPass", async (req, res) => {
try {
const email = req.body.email;
const emailEncrypted = req.body.emailEncrypted;
const user = await User.findOne({ email: email });
if (!user) {
res.status(400).send();
console.log("erreur");
} else {
sendEmail(emailEncrypted, email).catch((err) => {});
res.status(200).send(emailEncrypted);
}
} catch (error) {
res.send({ status: "erreur" });
}
});
function generateRandomCode(length) {
let result = "";
const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * characters.length));
}
return result;
}
async function startServer() {
await connectToDatabase();
app.listen(port, () => {
console.log(port);
});
}
const liste = [];
startServer();
const nodemailer = require("nodemailer");
async function sendEmail(emailEncrypted, mailTo) {
try {
let transporter = nodemailer.createTransport({
host: "smtp.gmail",
port: 465,
secure: true,
auth: {
user: process.env.USER,
pass: process.env.PASS,
},
});
const randomCode = generateRandomCode(6);
liste[0] = randomCode;
const mailOptions = {
from: "[email protected]",
to: mailTo,
subject: "Confirmation mail",
html: `<div style="background-color: #f5f5f5; padding: 20px;">
<h2 style="color: #333;">Veuillez confirmer votre adresse e-mail</h2>
<p style="background-color: #fff; padding: 10px; border: 1px solid #ccc;">
Veuillez confirmer votre adresse e-mail afin de vous connecter à votre compte. Votre code de confirmation est :
<span style="color: blue; font-weight: bold;">${liste[0]}</span>
</p>
<p style="color: #333;">Merci de faire confiance à Unidocs.</p>
<p style="color: red; font-weight: bold;">Cordialement,<br/>
L'équipe Unidocs</p>
</div>
`,
};
let info = await transporter.sendMail(mailOptions);
console.log("Email sent:", info.messageId);
} catch (error) {
console.error("Error sending email:", error);
}
}
app.get("/getVerificationCode", async (req, res) => {
const code = liste[0];
try {
res.send({ code });
} catch (error) {
res.send({ status: "erreur" });
}
});
我试过 sendGrid 但我遇到了同样的问题,使用 sendGrid 邮件到达垃圾邮件箱
回答如下:更多推荐
Nodemailer 无法正常工作
发布评论