【问题标题】:Basic server with email service带电子邮件服务的基本服务器
【发布时间】:2017-12-15 11:48:42
【问题描述】:

我想寻求一些指导,我想托管我的一个项目网站。 我已经完成了前端并放入了一个文件夹名称Client。 它包含多个文件夹中所需的资产,index.html 和一些带有文本/照片的页面,但还有另一个名为 registration.html 的页面,喜欢注册项目的人可以在其中注册。 注册页面如下所示

<form method="post" action="formdata">
  <input type="text" id="name" value="" placeholder="name"/>
  ...<!-- other fields -->
</form>

上面的字段应该发送到我的电子邮件。

现在这是我卡住的地方,服务器端。 在名为server 的文件夹中,我编写了这个简单的代码server.js 来托管页面,但没有任何功能。

var app = require('koa')();
var serve = require('koa-static');

app.use(serve('../Client'));

app.listen(8080);

我怎样才能让这个服务器从客户端获取数据并将其发送到我的电子邮件?

【问题讨论】:

  • 项目前端是什么技术?角度js还是?
  • 不,只是简单的 html 和一点 javascript。它是一个演示网站

标签: javascript html node.js web server


【解决方案1】:

您可以通过 AJAX 请求将数据从前端发送到后端。

如果你使用普通的 JS,你可以这样做

var xhttp = new XMLHttpRequest();
xhttp.open("POST", "/sendEmail", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");

或者如果你使用jQuery,你可以直接使用post方法

在你的后端,你需要设置一个路由来监听这个请求,因为你使用的是 Koa

var koa = require('koa');
var http = require('http');
var router = require('koa-router')();
var bodyParser = require('koa-body')();

router.post('/sendEmail', bodyParser, function *(next){
  console.log(this.request.body);
  yield(next);
});

现在,您可以在表单上使用 mailto 属性从前端本身打开邮件客户端,而无需发出请求,这样的事情会弹出带有正文的邮件客户端

<a href="mailto:someone@example.com?subject=Suggestions&body=Your%20suggestions%20are%20really%20important%20to%20us%20,thanks!">Send suggestions!</a>

【讨论】:

    【解决方案2】:

    @Shivam 谢谢,按预期工作。 从客户端发送的数据使用 JSON.stringify() 编码;并作为字符串发送

    var app = require('koa')();
    var http = require('http');
    var router = require('koa-router')();
    var bodyParser = require('koa-body')();
    var serve = require('koa-static');
    
    app.use(serve('../Client')); //serve public files
    
    router.post("/sendEmail", bodyParser, function *(next){
        //get form data from client
        console.log("Got data")
        var datastring = this.request.body;
        console.log(datastring);
        yield(next);
    });
    
    app.use(router.routes()); //use routes
    
    app.use(function *(){
        //redirect 404
        this.redirect('/index.html');
    });
    
    console.log("Running on 8080");
    app.listen(8080);

    这是代码,也许其他人也需要这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 2023-03-24
      • 2018-01-02
      • 2015-05-24
      相关资源
      最近更新 更多