我已经创建了一个网站,您可以在其中填写表单,然后将表单数据保存到JSON文件中。数据显示在网站上,如下所示:
之后,我通过电子邮件发送数据。但电子邮件的格式如下:
如何让电子邮件的格式与网站相同?我怀疑格式更改我将数据保存到JSON文件然后再次读取。但我不确定,如果是,我不知道如何解决它。
以下是代码:
var fs = require('fs')
var formidable = require("formidable")
var util = require('util')
var mailFunctions = require('./mailFunction.js');
'use strict';
function processAllFieldsOfTheForm(req, res) {
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
res.writeHead(200, {
'content-type': 'text/plain'
});
res.write('received the data:\n\n');
res.end(util.inspect( {
fields: fields,
files: files
}));
});
}
function processFormFieldsIndividual(req, res) {
var fields = [];
var form = new formidable.IncomingForm();
form.on('field', function (field, value) {
fields.push([field, value]);
});
// Display data to user
form.on('end', function() {
var objectToJSON = JSON.stringify({
fields: fields
}, null, 2)
fs.writeFile('C:/Users/admin/Desktop/Node.js/test/source/json/answers.json', objectToJSON, (err) => {
if (err) {
console.log(err);
console.log('Error while writing file')
throw err;
}
})
res.writeHead(200, {
'content-type': 'text/plain'
});
res.write('received the data: \n\n');
res.end(util.inspect( {
fields: fields
}));
});
// Returns data inside file
form.on('end', function() {
fs.readFile('C:/Users/admin/Desktop/Node.js/test/source/json/answers.json', (err, data) => {
if (err) {
console.log(err)
console.log('Error while reading file')
throw err;
}
else {
mailFunctions.makeMail(data)
}
});
});
form.parse(req);
}
我对node.js也不熟悉所以那里可能有如此无用/坏的代码。
答案 0 :(得分:0)
您没有包含源代码的唯一相关部分(mailFunction.js文件),因此无法告诉您它有什么问题。 (另外,屏幕截图有什么用?我们是否应该使用photoshop来修复它?如果开发人员失去了复制和粘贴代码的能力,那么就没有希望了。)
现在,当我们不知道您的网站是什么样子时,也不可能告诉您如何制作看起来像您网站的电子邮件,不是吗,而且这里可以说的一切都是非常一般性的建议
你需要使用一些模板系统来生成HTML(我假设它是HTML,但你也可能需要的只是纯文本 - 再次,你的问题是不可能的),你需要确保HTML是正确格式化电子邮件 - 这与网站格式完全不同,很多人都不知道。
然后,您需要正确发送HTML电子邮件以及所有附件,因为您无法可靠地引用服务器上托管的图像和其他资产。
npm上有很好的模块可以帮助你完成所有这些步骤。要发送邮件,您可以使用Nodemailer:
要在Nodemailer中使用模板,请参阅:
要发送电子邮件,最好使用Mandrill,Mailgun或Amazon SES等交易电子邮件服务,如果您不希望被ISP阻止,并且您的邮件会转到用户的垃圾邮件文件夹。参见:
所有这些都得到了Nodemailer的支持。
要了解如何将电子邮件的实际HTML和CSS格式化为您想要的内容,请参阅这些教程: