Сценарий прост:NodeJS Email псевдонимаа
- У меня есть несколько доменов
- Я хочу, чтобы запустить электронную почту на этих доменах
- Я wantthem все для доставки по тому же адресу, независимо от того, кто они, где отправляется или на какой домен
- Я хочу, чтобы сохранить оригинальные заголовки конкретно к полю
Для этого проекта мне нужно использовать NodeJS
Я пробовал несколько вещей безрезультатно, я довольно разбираюсь в узле, но понятия не имею, что я делаю, когда дело касается электронной почты.
У меня есть все домены, указывающие на правильное место, включая записи MX, и используя simplesmtp, я могу получать электронные письма, я просто не могу понять, как их доставить, не разбивая заголовки и не пересылая их в этом случае они отображаются в их адресате в виде двух электронных писем.
Любые предложения или руководство высоко ценится
С уважением, Дэвид
Поскольку все мы любим код вот соответствующий StuFF
var simplesmtp = require("simplesmtp"),
MailParser = require("mailparser").MailParser,
mailparser = new MailParser(),
nodemailer = require("nodemailer"),
gmail = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "***",
pass: "***"
}
}),
fs = require("fs"),
smtp = simplesmtp.createServer();
// Setup the listener
smtp.listen(25);
// runs when the email is initially recieved
smtp.on("startData", function(connection){
// log out some basic stuff
console.log("Message from:", connection.from);
console.log("Message to:", connection.to);
// start the write stream
connection.saveStream = fs.createWriteStream("/path/message.txt");
});
// each chunk of data that is received
smtp.on("data", function(connection, chunk){
// continue the write stream
connection.saveStream.write(chunk);
});
// email completly received
smtp.on("dataReady", function(connection, callback){
// end the write stream
connection.saveStream.end();
// log some more stuff
console.log("Incoming message saved to /path/message.txt");
// start a readstream to forward out the message
fs.createReadStream("/path/message.txt").pipe(mailparser);
//
callback(null, "ABC1"); // ABC1 is the queue id to be advertised to the client
// callback(new Error("Rejected as spam!")); // reported back to the client
});
// Parse the email
mailparser.on("end", function(email){
// now lets forward the mail
// for now everything goes back to *****,
// eventually ill be setting up some configs to handle other addresses
// console.log(email.headers); */
// email.headers['X-Forwarded-To'] = "*****";
// email.to = "*****";
delete email.headers.received;
delete email.text;
// delete email.headers.X-Received;
email.to = email.to + ', ' + "*****";
email.headers.to = email.to + ', ' + "*****";
console.log(email.headers);
gmail.sendMail(email, function(err, response){
if(err)
console.log(err);
// now clean up that message file
fs.rename('/path/message.txt', 'emails/'+new Date().toJSON()+email.subject+'.eml', function(err){
if(err) console.log(err);
fs.unlink('/path/message.txt', function(){console.log('clenaed up');});
})
// final logging
console.log('sent');
});
});
вы были в состоянии сделать это? Я не понимаю понятия электронной почты. Таким образом, ваш SMTP-сервер действует как mta-сервер, что означает, что он может получать электронные письма. Затем вы пытаетесь переслать его в свою учетную запись gmail, но хотите, чтобы сообщение запоминало их оригинал по адресам, а затем, когда вы отвечаете, они должны быть отправлены обратно от имени этих оригиналов по адресам через gmail .... –