Node.js 如何创建自定义smtp服务器以在Nodejs中发送通知电子邮件?

Node.js 如何创建自定义smtp服务器以在Nodejs中发送通知电子邮件?,node.js,email,npm,smtp,mail-server,Node.js,Email,Npm,Smtp,Mail Server,我的要求是从我的应用程序发送通知电子邮件到任何电子邮件id,例如:gmail地址。我学习了一些模块,比如 这就是我到目前为止所拥有的 var SMTPServer = require('smtp-server').SMTPServer var server = new SMTPServer({ name: 'testDomain.com', authOptional: true, onAuth: function (auth, session, callback) { ca

我的要求是从我的应用程序发送通知电子邮件到任何电子邮件id,例如:gmail地址。我学习了一些模块,比如

这就是我到目前为止所拥有的

var SMTPServer = require('smtp-server').SMTPServer

var server = new SMTPServer({
  name: 'testDomain.com',
  authOptional: true,
  onAuth: function (auth, session, callback) {
    callback(null, {user: 'sample-user'}) 
  }
})
server.on('error', function (err) {
  console.log('Error %s', err.message)
})

var port = 1234

server.listen(port, function () {
  console.log('SERVER: Listening on port: ' + port)
  var opts = {
    host: '127.0.0.1',
    port: port,
    username: 'testUser',
    password: 'testUser123',
    to: 'someUser@gmail.com'
  }
  sendEmail(opts,function (err, message) {
    server.close()
  })
})
其中sendEmail是使用emailjs的函数

 function sendEmail(opts,callback) {
  var server = email.server.connect({
    user: opts.username || '',
    password: opts.password || '',
    host: opts.host,
    ssl: false
  })

  server.send({
    text: 'i hope this works',
    from: 'you <'+opts.username+'@testDomain.com>',
    to: ' <'+opts.to+'>',
    subject: 'testing emailjs'
  }, function (err, message) {
     console.log(err || message);
     callback(err, message)
    })
}
这似乎是可行的,但给出了这个输出

response: '250 OK: message queued'
smtp连接文档表示,它只对邮件进行排队,不会将邮件发送给收件人

我怎样才能达到我的要求?我试图从自定义邮件服务器发送通知,因为我希望避免在代码中以明文形式添加电子邮件帐户的用户凭据。我正在寻找一个简单的邮件服务器,可以旋转时,通知需要发送,然后关闭


我是否完全偏离了轨道,不了解邮件服务器是如何工作的??请给出一些反馈和解决这个问题的最佳方法。

这只是我的意见,但我认为最好采用单独的邮件服务器。 例如:

var nodemailer=require('nodemailer');
//使用默认SMTP传输创建可重用的传输对象
var transporter=nodeEmailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com),;
//使用unicode符号设置电子邮件数据
var mailpoptions={
发件人:“‘Fred Foo’”,//发件人地址
致:'bar@blurdybloop.com, baz@blurdybloop.com“,//接收者列表
主题:“你好✔', // 主题行
text:“Hello world?”,//纯文本正文
html:“你好,世界?”//html正文
};
//使用定义的传输对象发送邮件
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
返回console.log(错误);
}
console.log('发送的消息:'+信息响应);
});
为安全起见:

  • 您可以使用单独的文件来存储用户名/密码

  • Use可以使用基于令牌的身份验证。所以你不需要保存密码。OAuth就是一个例子。您可以使用令牌进行身份验证,而不是使用密码。您可以从邮件服务器提供商(如gmail)获得此令牌。 您可以找到oauth和NodeEmailer的一个使用示例


这只是我的观点,但我认为最好采用单独的邮件服务器。 例如:

var nodemailer=require('nodemailer');
//使用默认SMTP传输创建可重用的传输对象
var transporter=nodeEmailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com),;
//使用unicode符号设置电子邮件数据
var mailpoptions={
发件人:“‘Fred Foo’”,//发件人地址
致:'bar@blurdybloop.com, baz@blurdybloop.com“,//接收者列表
主题:“你好✔', // 主题行
text:“Hello world?”,//纯文本正文
html:“你好,世界?”//html正文
};
//使用定义的传输对象发送邮件
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
返回console.log(错误);
}
console.log('发送的消息:'+信息响应);
});
为安全起见:

  • 您可以使用单独的文件来存储用户名/密码

  • Use可以使用基于令牌的身份验证。所以你不需要保存密码。OAuth就是一个例子。您可以使用令牌进行身份验证,而不是使用密码。您可以从邮件服务器提供商(如gmail)获得此令牌。 您可以找到oauth和NodeEmailer的一个使用示例


完全忽略问题完全忽略问题
response: '250 OK: message queued'
var nodemailer = require('nodemailer');

// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com');

// setup e-mail data with unicode symbols
var mailOptions = {
    from: '"Fred Foo ?" <foo@blurdybloop.com>', // sender address
    to: 'bar@blurdybloop.com, baz@blurdybloop.com', // list of receivers
    subject: 'Hello ✔', // Subject line
    text: 'Hello world ?', // plaintext body
    html: '<b>Hello world ?</b>' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }
    console.log('Message sent: ' + info.response);
});