Так что это очень странный вопрос, и я не ожидаю, что кто-то действительно ответит на него, но я здесь, чтобы попытаться выяснить, сталкивался ли кто-либо с такой же проблемой.
Проблема, которую я замечаю, заключается в том, что наше приложение, похоже, отправляет повторяющиеся электронные письма. Например, я могу отправить отчет из нашего приложения, и оно отправит это электронное письмо один раз, а затем похоже, что другое письмо будет отправлено ровно через минуту.
Я использую nodemailer
для отправки электронных писем с нашего сервера приложений, и наша электронная почта по умолчанию, которую мы используем в нашем офисе, - Outlook v16.0.12130.20272
с использованием IMAP . Эти электронные письма отправляются нашим noreply электронным письмом, которое, как мне кажется, размещается через GoDaddy .
Я сам отправил тестовые электронные письма и посмотрел на вкладке сети, чтобыПосмотрите, может ли это быть проблемой тайм-аута, но ответ завершается 200 OK status
, и время также отображается как завершенное. Также, когда я консоль регистрирую ответ, это происходит только один раз, что заставляет меня поверить, что на самом деле это только одна электронная почта. Должно быть что-то происходящее между тем, когда хост отправляет электронную почту, и когда наши получатели действительно получают их, но я не совсем уверен.
Вот файл server.js . Именно здесь делается запрос smtp
.
var nodemailer = require("nodemailer");
const path = require('path');
const express = require('express');
const http = require('http');
const fs = require('fs');
const socketIO = require('socket.io');
const bodyParser = require('body-parser')
import env from '../env.config.json';
const PORT = require('../env.config.json').SERVER.PORT;
const publicPath = path.join(__dirname, '../public');
import api from './routers/api-routing';
//---------------------------------------------------------------------------
var smtpTransport = nodemailer.createTransport({
service: env.EMAIL.SERVICE,
host: env.EMAIL.HOST,
auth: {
user:env.EMAIL.AUTH.USER,
pass:env.EMAIL.AUTH.PASS
}
});
var mailCounter = 0;
var numPeople = 0;
var app = express();
var server = http.createServer(app);
const port = PORT || 3000;
app.use(express.static(publicPath));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true}));
const io = socketIO(server);
app.use('/api', api(app, io));
// require('./routers/api-routing')(app, io);
//$.get("/send", { to: to, subject: subject).value, text: 'html' }, function (data) { });
app.get('*', function (request, response) {
if (request.get('x-auth')) console.log("x-auth: ", request.get('x-auth'));
const proto = request.get('X-Forwarded-Proto');
if (proto) {
if (proto === 'http') response.redirect(301, "https://ourdomain.com".concat(request.url));
}
response.sendFile(path.resolve(__dirname, '../', 'public', 'index.html'))
if ((request.url).substring(0, 5) == "/send") {
var mailOptions = {
to: request.query.to,
bcc: request.query.bcc,
subject: request.query.subject,
text: request.query.text
}
//console.log(mailOptions); Read up on NodeMailer for details.
smtpTransport.sendMail({ //email options
from: "COMPANY <noreply@ouremail.com>", // sender address. Must be the same as authenticated user if using Gmail.
to: mailOptions.to,
bcc: "COMPANY <noreply@ouremail.com>", // sending to itself
subject: mailOptions.subject, // subject
html: mailOptions.text, // body
}, function (error, response) { //callback
if (error) {
console.log(error);
} else {
console.log("Message sent");
//console.log("Amount of people getting this email: " + response.accepted.length);
}
smtpTransport.close(); // shut down the connection pool, no more messages. Comment this line out to continue sending emails.
});
}
});
io.on('connection', (socket) => {
require('./middleware/sockets')(socket);
});
server.listen(port, () => {
console.log(`Server is up on port ${port}.`);
});
Это часть нашего env.config.file, которая относится к электронным письмам.
"EMAIL": {
"SERVICE": "Godaddy",
"HOST": "smtp.gmail.com",
"AUTH": {
"USER": "noreply@ouremail.com",
"PASS": "OURPASS"
}
}
Если кто-толюбые идеи или предложения, я был бы очень признателен, спасибо!