Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用带有HTML正文的Nodejs发送邮件_Node.js_Ecmascript 6_Nodemailer_Template Strings - Fatal编程技术网

Node.js 使用带有HTML正文的Nodejs发送邮件

Node.js 使用带有HTML正文的Nodejs发送邮件,node.js,ecmascript-6,nodemailer,template-strings,Node.js,Ecmascript 6,Nodemailer,Template Strings,我正在尝试使用NodeEmailer从我的服务器发送电子邮件。不幸的是,由于这个错误,我无法测试它: D:\Full Stack\Node\NodeLoginJWT\functions\password.js:58 'This token is valid only within two minutes.' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError: Unexpected string a

我正在尝试使用NodeEmailer从我的服务器发送电子邮件。不幸的是,由于这个错误,我无法测试它:

D:\Full Stack\Node\NodeLoginJWT\functions\password.js:58
        'This token is valid only within two minutes.'
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected string
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (D:\Full Stack\Node\NodeLoginJWT\routes.js:9:18)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
[nodemon] app crashed - waiting for file changes before starting...
D:\Full Stack\Node\NodeLoginJWT\functions\password.js:58
'此令牌仅在两分钟内有效。'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError:意外的字符串
在createScript上(vm.js:56:10)
在Object.runInThisContext(vm.js:97:10)
在模块处编译(Module.js:542:28)
在Object.Module.\u extensions..js(Module.js:579:10)
在Module.load(Module.js:487:32)
在tryModuleLoad时(module.js:446:12)
在Function.Module.\u加载(Module.js:438:3)
at Module.require(Module.js:497:17)
根据需要(内部/module.js:20:19)
反对。(D:\Full Stack\Node\NodeLoginJWT\routes.js:9:18)
在模块处编译(Module.js:570:32)
在Object.Module.\u extensions..js(Module.js:579:10)
在Module.load(Module.js:487:32)
在tryModuleLoad时(module.js:446:12)
在Function.Module.\u加载(Module.js:438:3)
at Module.require(Module.js:497:17)
[nodemon]应用程序崩溃-正在等待文件更改,然后再启动。。。
这是导致错误的代码块:

const transporter = nodeMailer.createTransport(`smtps://${config.email}:${config.password}@smtp.gmail.com`);

  const mailOptions = {
    from: `"${conifg.name}" <${config.email}>`,
    to: email,
    subject: 'Reset Password',
    html: `Hello ${user.name}`, 

        'Your account password token is ${random}'
        'This token is valid only within two minutes.'

        'Thanks,'
        'Team. '
  };

  return transporter.sendMail(mailOptions);
const transporter=nodeMailer.createTransport(`smtps://${config.email}:${config.password}@smtp.gmail.com`);
常量邮件选项={
发件人:`${conifg.name}`,
致:电邮:,
主题:“重置密码”,
html:`Hello${user.name}`,
'您的帐户密码令牌为${random}'
'此令牌仅在两分钟内有效。'
“谢谢,”
“团队。”
};
返回transporter.sendMail(邮件选项);

我认为你的插值有问题

  const mailOptions = {
    from: `"${conifg.name}" <${config.email}>`,
    to: email,
    subject: 'Reset Password',
    html: `Hello ${user.name}, // the tick should not come here 

        'Your account password token is ${random}'
        'This token is valid only within two minutes.'

        'Thanks,'
        'Team. '` // the tick should come here
  };
const mailpoptions={
发件人:`${conifg.name}`,
致:电邮:,
主题:“重置密码”,
html:`Hello${user.name},//勾号不应该出现在这里
'您的帐户密码令牌为${random}'
'此令牌仅在两分钟内有效。'
“谢谢,”
“团队”。“//蜱应该到这里来
};

我认为你的插值有问题

  const mailOptions = {
    from: `"${conifg.name}" <${config.email}>`,
    to: email,
    subject: 'Reset Password',
    html: `Hello ${user.name}, // the tick should not come here 

        'Your account password token is ${random}'
        'This token is valid only within two minutes.'

        'Thanks,'
        'Team. '` // the tick should come here
  };
const mailpoptions={
发件人:`${conifg.name}`,
致:电邮:,
主题:“重置密码”,
html:`Hello${user.name},//勾号不应该出现在这里
'您的帐户密码令牌为${random}'
'此令牌仅在两分钟内有效。'
“谢谢,”
“团队”。“//蜱应该到这里来
};

我正在使用NodeEmailer,以下是我的代码:

var express = require('express');
var router = express.Router();
var nodemailer = require('nodemailer');

router.post('/', handleSendEmail); // handle the route at yourdomain.com/sayHello

function handleSendEmail(req, res) {
    // Not the movie transporter!
    var transporter = nodemailer.createTransport({
     service: 'Gmail',
     auth: {
         user: '', // Your email id
         pass: ‘’// Your password
     }
    });
    var text = 'Hello from \n\n' + req.body.user_name;
    var mailOptions = {
        from: 'sender@gmail.com', // sender address
        to: 'receiver@gmail.com', // list of receivers
        subject: 'Appointment Email Example', // Subject line
        text: text,
        html: '<!DOCTYPE html>'+
        '<html><head><title>Appointment</title>'+
        '</head><body><div>'+
        '<img src="http://evokebeautysalon1.herokuapp.com/main/img/logo.png" alt="" width="160">'+
        '<p>Thank you for your appointment.</p>'+
        '<p>Here is summery:</p>'+
        '<p>Name: James Falcon</p>'+
        '<p>Date: Feb 2, 2017</p>'+
        '<p>Package: Hair Cut </p>'+
        '<p>Arrival time: 4:30 PM</p>'+
        '</div></body></html>'
    };
    transporter.sendMail(mailOptions, function(error, info){
        if(error){
            console.log(error);
            res.json({yo: 'error'});
        }else{
            console.log('Message sent: ' + info.response);
            res.json({yo: info.response});
        };
    });
}

module.exports = router;
var express=require('express');
var router=express.router();
var nodeEmailer=require('nodeEmailer');
router.post(“/”,HandleSendMail);//在yourdomain.com/sayHello处理路由
功能HandleSendMail(请求、回复){
//不是电影传送者!
var transporter=nodeEmailer.createTransport({
服务:“Gmail”,
认证:{
用户:“”,//您的电子邮件id
传递:“”//您的密码
}
});
var text='Hello from\n\n'+req.body.user\u name;
var mailpoptions={
发件人:'sender@gmail.com“,//发件人地址
致:'receiver@gmail.com“,//接收者列表
主题:'约会电子邮件示例',//主题行
文本:文本,
html:'+
“任命”+
''+
''+
“谢谢您的预约。

”+ “这里是夏天:

”+ “姓名:詹姆斯·法尔肯”+ “日期:2017年2月2日”+ “套餐:理发”+ 到达时间:下午4:30+ '' }; transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误){ console.log(错误); res.json({yo:'error'}); }否则{ console.log('发送的消息:'+信息响应); res.json({yo:info.response}); }; }); } module.exports=路由器;
我正在使用NodeEmailer,以下是我的代码:

var express = require('express');
var router = express.Router();
var nodemailer = require('nodemailer');

router.post('/', handleSendEmail); // handle the route at yourdomain.com/sayHello

function handleSendEmail(req, res) {
    // Not the movie transporter!
    var transporter = nodemailer.createTransport({
     service: 'Gmail',
     auth: {
         user: '', // Your email id
         pass: ‘’// Your password
     }
    });
    var text = 'Hello from \n\n' + req.body.user_name;
    var mailOptions = {
        from: 'sender@gmail.com', // sender address
        to: 'receiver@gmail.com', // list of receivers
        subject: 'Appointment Email Example', // Subject line
        text: text,
        html: '<!DOCTYPE html>'+
        '<html><head><title>Appointment</title>'+
        '</head><body><div>'+
        '<img src="http://evokebeautysalon1.herokuapp.com/main/img/logo.png" alt="" width="160">'+
        '<p>Thank you for your appointment.</p>'+
        '<p>Here is summery:</p>'+
        '<p>Name: James Falcon</p>'+
        '<p>Date: Feb 2, 2017</p>'+
        '<p>Package: Hair Cut </p>'+
        '<p>Arrival time: 4:30 PM</p>'+
        '</div></body></html>'
    };
    transporter.sendMail(mailOptions, function(error, info){
        if(error){
            console.log(error);
            res.json({yo: 'error'});
        }else{
            console.log('Message sent: ' + info.response);
            res.json({yo: info.response});
        };
    });
}

module.exports = router;
var express=require('express');
var router=express.router();
var nodeEmailer=require('nodeEmailer');
router.post(“/”,HandleSendMail);//在yourdomain.com/sayHello处理路由
功能HandleSendMail(请求、回复){
//不是电影传送者!
var transporter=nodeEmailer.createTransport({
服务:“Gmail”,
认证:{
用户:“”,//您的电子邮件id
传递:“”//您的密码
}
});
var text='Hello from\n\n'+req.body.user\u name;
var mailpoptions={
发件人:'sender@gmail.com“,//发件人地址
致:'receiver@gmail.com“,//接收者列表
主题:'约会电子邮件示例',//主题行
文本:文本,
html:'+
“任命”+
''+
''+
“谢谢您的预约。

”+ “这里是夏天:

”+ “姓名:詹姆斯·法尔肯”+ “日期:2017年2月2日”+ “套餐:理发”+ 到达时间:下午4:30+ '' }; transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误){ console.log(错误); res.json({yo:'error'}); }否则{ console.log('发送的消息:'+信息响应); res.json({yo:info.response}); }; }); } module.exports=路由器;
这是html行正下方的第56行,从“我们的帐户…”开始这是第56行,就在html行的下面,从“我们的帐户…”开始这更优雅,但问题已经解决了。谢谢这更优雅,但问题已经解决了。谢谢