研究过node_club项目的牛人们都知道,node_club项目是通过使用模块——nodemailer来实现邮件的发送功能的,其中关于邮件的设置属性在config.js文件中进行了配置,现在自己根据自己的smpt设置,修改了相应的发送邮件需要用到的属性,如下图所示:
mail_port: 25,
mail_user: 'zuoyour[@yeah](/user/yeah).net',
mail_pass: 'zuoyour!@#123',
mail_host: 'smtp.yeah.net',
mail_sender: 'zuoyour[@yeah](/user/yeah).net',
mail_use_authentication: true,
上图中的代码段是属于config.js文件中的,然后我们知道在/controllers/mail.js文件中会有如下一段代码引用到我们设置的相应邮件属性,如下图所示:
mailer.SMTP = {
host: config.mail_host,
port: config.mail_port,
use_authentication: config.mail_use_authentication,
user: config.mail_user,
pass: config.mail_pass};
上图中的yeah.net邮件用户名和密码都是没有问题(可以通过此帐户进行登录验证),但是在注册的过程中,总是如下抛出异常:
网上进行搜索的结果告诉我是由于帐号的原因,但是设置的帐号信息并没有什么问题,找了一天的答案始终没有结果,因此在此贴出来,希望得到大家的解惑或者帮助!!!谢谢
额= =
第一感觉好像是你的邮件账号mail_user不用后面的@yeah.net
慢慢探索 祝你愉快
这方面的考虑我也试过呢。。。可是还是抛异常。。。求解释。其实上述的邮件配置项在java中实现的邮件发送功能是没有问题的。只是不知道为什么在这边不行。。。深入到nodemailer源码里一探究竟发现貌似没有看到哪里用到了这个上述的那个mailer.SMTP对象。看的是nodemailer0.3.5版本的源码。。。求高手解释!!!
@jackybing 你看下你要发送到的邮件地址格式对不对
github
上的nodemailer项目主页有例子,我试了下Gmail
发送成功。
用qq邮箱
我也和你报一样的错误。
damngoto:那你具体到node_club项目中是如何使用gmail邮箱的呢?可否分享下你的config.js文件下的smtp配置???我按照你的思路,换成了下面的smpt设置,报的错误还是和上文一样!authentication error!
// mail SMTP
mail_port: 25,
mail_user: 'zjbcnblog@gmail.com',
mail_pass: 'zjb18810646702',
mail_host: 'smtp.gmail.com',
mail_sender: 'zjbcnblog@gmail.com',
mail_use_authentication: true,
可否再进一步说明。谢谢!!
@jackybing 看了下我也没找到,按照官方的方法完全没有问题
var nodemailer = require('nodemailer');
//设置SMTP
var mailer = nodemailer.createTransport('SMTP', {
//smtp.yeah.net
host: config.mailHost,
//25
port: config.mailPort,
//账户密码
auth: {
user: config.mailUser,
pass: config.mailPass
}
});
//设置option
var data = {
from: 'zuoyour@yeah.net',
to: 'xxxx@xx.com',
subject: subject,
html: html
};
//发送邮件
mailer.sendMail(option, function(err, success){
if (err) {
console.log(err);
}
} );
至于use_authentication没看到这个选项,在smtp.js里找到这段代码
if(this.options.use_authentication === false){
this.options.auth = false;
应该是默认true的
@gxmari007 非常感谢你的回复,希望有机会和你多交流一下吧。最近在研究node_club源码,可以的话,是否可以相互交流下心得。。。
@gxmari007 对了,可以再和我解释下几个几点疑惑吗?
- app.use(function(){})函数的作用是什么?可以理解为是一种全局性的函数吗?也就是说第次请求都会触发里面的函数来执行相应的操作?
- app.dynamicHelpers()函数的作用又是什么呢?和app.use()函数有什么异同点吗?在node_club项目中用到了此函数,作用貌似是用来设置csrf的,那么这又是如何起作用的呢? 方便的话,可以告之一下吗?一起讨论下也行。。。
我的mail.js
var nodemailer = require("nodemailer");
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "xugaofan#gmail.com",
pass: "xxx"
}
});
var mailOptions = {
from: "xugaofan#gmail.com",
};
exports.send = function(settings,cb){
settings.from = mailOptions.from;
smtpTransport.sendMail(settings,function(err,response){
smtpTransport.close();
cb(err,response);
});
};
@jackybing 具体我还没怎么研究过,不过看到app.use(require('./controller/sign').auth_user)
这个中间件,我想是每次有请求进来都会调用一次,毕竟要验证用户的
app.dynamicHelpers()
这个函数还不了解,不过我引用了之后会触发403 forbidden, 看了下一个请求会造成多次调用= =我就纳闷了…有待研究