我的网页上有一个nodemailer功能,我试图在本地测试。
在我的package.json中,版本为"nodemailer": "0.7.1"
。
在我的路由文件中,我有:
var express = require('express');
var router = express.Router();
var nodemailer = require("nodemailer");
router.get('/', function(req, res, next) {
res.render('home');
});
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "example@gmail.com",
pass: "examplePass"
}
});
router.get('/send',function(req,res){
var mailOptions={
from : req.query.from
}
console.log(mailOptions);
smtpTransport.sendMail(mailOptions, function(error, response){
if (error){
console.log(error);
res.end("error");
} else {
console.log("Message sent: " + response.message);
res.end("sent");
}
});
});
module.exports = router;
在我的页面中,我在底部有一个脚本:
$(document).ready(function(){
var to,from;
$(".signup").on("click", function(){
from = $("#search").val();
$.get("/send",
{from:from},
function(data){
alert("Thanks :) We'll keep you updated.");
location.reload(true);
});
});
});
我测试了一些东西,当我点击注册按钮时,我确实得到了'来自'字段,以及警报消息,并在我批准警报后重新加载页面。
问题是邮件实际上没有到达收件箱,而控制台msg(firefox)只读取"syntax error send:1:1"
如果我查看请求的网络,我可以看到状态代码是200 OK,但是'响应'标签只显示"错误",没有任何解释。
我无法在没有任何信息的情况下对此进行调试,因此我希望有人能够了解它为什么不起作用。它应该顺便说一句,因为我有另一个网站,它的工作完美,并且基本上从那里复制粘贴......
感谢。
答案 0 :(得分:1)
原来问题出在Nodemailer STMP功能的数据字段中。具体来说,我只是省略了'to:email@gmail.com'参数。
我能够通过服务器端的console.log调试此问题并最终碰到这篇文章,这让我想到了再次检查函数字段:Sending email from local host with Nodemailer
在任何情况下,除了'from:'之外还添加'to:'就可以了。