【问题标题】:How to obtain data from form when using passport and express in Node.jsNode.js中使用passport和express时如何从表单中获取数据
【发布时间】:2018-03-22 14:26:25
【问题描述】:

我正在尝试为我的应用发送欢迎电子邮件。我正在使用下面的表单和 post 方法。

<form action="/signup" method="post">

                    <h1> Registro </h1>

                    <div class="usuario">
                        <label> Usuario </label> <br />
                        <input type="text" id="userSign" name="email" onFocus="entrarFoco(this)" onBlur="salirFoco(this); revisarObligatorio(this)">
                    </div> <!-- Cierre del usuario-->

                    <div class="password">
                        <label> Contraseña </label> <br />
                        <input type="password" name="password" onFocus="entrarFoco(this)" onBlur="salirFoco(this); revisarObligatorio(this)">
                    </div> <!-- Cierre del password-->

                    <button type="submit"> Registrarse </button>

                </form> 

我使用快递和护照进行注册:

app.post('/signup', 

    passport.authenticate('local-signup', {

        successRedirect : '/profile', //si los datos son correctos entraremos al perfil
        failureRedirect : '/', //si hay un error o los datos no son correctos redirecciona a la página principal
    })

);

我想在用户成功注册后发送一封电子邮件。我正在使用此代码:

// email info
    var api_key = '********'; //my apikey
    var domain = '*********'; //my domain
    var mailgun = require('mailgun-js')({apiKey: api_key, domain: domain});
    var email = req.body.email; 

    console.log('email '+email);

    // POST /sendmail
    // curl --data "to=<email>, ..." http://localhost:3000/sendmail
    var data = {
    from: 'foodjoysocial@gmail.com',
    to: email,
    subject: 'Nuevo registro',
    text: 'Testing some Mailgun awesomness!'
    };

    mailgun.messages().send(data, function (error, body) {
    if (error) {
    res.json(error);
    } else {
    console.log(body);
    res.json(body);
    }
    });

我无法使用 req.body.email 从表单的输入 tex 字段中获取电子邮件。我尝试使用电子邮件而不是“req.body.name”,它可以工作。

如何获取用户的电子邮件?

【问题讨论】:

  • >“我已经尝试使用和电子邮件代替它,它可以工作。” ??你不小心把你的句子变成了一部分?
  • 错误已修复,对此感到抱歉,希望现在更好
  • 在发布问题之前已经阅读过,但我仍然不明白。我在想也许我可以在护照策略中做到这一点,但对我来说看起来并不整洁。

标签: node.js express passport.js mailgun


【解决方案1】:

正如您所说,您在成功注册后尝试发送电子邮件,因此您可以从“req.user”获取用户信息。试试这个“req.user.email”。此外,为了访问 req,您可以将此电子邮件发送实用程序用作中间件。

// email info
var api_key = '********'; //my apikey
var domain = '*********'; //my domain
var mailgun = require('mailgun-js')({apiKey: api_key, domain: domain});
var email = req.user.email; 

console.log('email '+email);

// POST /sendmail
// curl --data "to=<email>, ..." http://localhost:3000/sendmail
var data = {
from: 'foodjoysocial@gmail.com',
to: email,
subject: 'Nuevo registro',
text: 'Testing some Mailgun awesomness!'
};

mailgun.messages().send(data, function (error, body) {
if (error) {
res.json(error);
} else {
console.log(body);
res.json(body);
}
});

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2019-08-27
    • 2020-11-29
    • 2018-07-26
    相关资源
    最近更新 更多