Node.js 如何创建自定义smtp服务器以在Nodejs中发送通知电子邮件?
我的要求是从我的应用程序发送通知电子邮件到任何电子邮件id,例如:gmail地址。我学习了一些模块,比如 这就是我到目前为止所拥有的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
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);
});