如何在我的电子邮件中获取与在我的网站上相同的格式?

时间:2017-04-26 07:56:13

标签: json node.js

我已经创建了一个网站,您可以在其中填写表单,然后将表单数据保存到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也不熟悉所以那里可能有如此无用/坏的代码。

1 个答案:

答案 0 :(得分:0)

您没有包含源代码的唯一相关部分(mailFunction.js文件),因此无法告诉您它有什么问题。 (另外,屏幕截图有什么用?我们是否应该使用photoshop来修复它?如果开发人员失去了复制和粘贴代码的能力,那么就没有希望了。)

现在,当我们不知道您的网站是什么样子时,也不可能告诉您如何制作看起来像您网站的电子邮件,不是吗,而且这里可以说的一切都是非常一般性的建议

你需要使用一些模板系统来生成HTML(我假设它是HTML,但你也可能需要的只是纯文本 - 再次,你的问题是不可能的),你需要确保HTML是正确格式化电子邮件 - 这与网站格式完全不同,很多人都不知道。

然后,您需要正确发送HTML电子邮件以及所有附件,因为您无法可靠地引用服务器上托管的图像和其他资产。

npm上有很好的模块可以帮助你完成所有这些步骤。要发送邮件,您可以使用Nodemailer:

要在Nodemailer中使用模板,请参阅:

要发送电子邮件,最好使用Mandrill,Mailgun或Amazon SES等交易电子邮件服务,如果您不希望被ISP阻止,并且您的邮件会转到用户的垃圾邮件文件夹。参见:

所有这些都得到了Nodemailer的支持。

要了解如何将电子邮件的实际HTML和CSS格式化为您想要的内容,请参阅这些教程: