我的要求是从我的应用程序向任何电子邮件ID发送通知电子邮件,例如:gmail地址。我浏览了一些模块,如smtp-server,smtp-connection和emailjs
这就是我现在所拥有的。
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)
})
}
但似乎客户端无法连接到服务器。它挂了。
我最初尝试过这样的smtp-connection:
var connection = new SMTPConnection({
port: port,
host: '127.0.0.1',
ignoreTLS: true
})
connection.connect(function () {
var envelope = {
from: opts.username+'@testDomain.com',
to: opts.to
}
var message = "Hello!!!"
connection.send(envelope, message, function(err,message){
callback(err,message)
connection.quit()
})
这似乎有效,但提供了此输出
response: '250 OK: message queued'
smtp-connection文档说它只会将消息排队,而不会将消息传递给收件人。
我如何达到我的要求?我试图从自定义邮件服务器发送通知,因为我想避免在明文代码中添加电子邮件帐户的用户凭据。我正在寻找一个简单的邮件服务器,可以在需要发送通知然后关闭时启动它。
我完全偏离了轨道,不了解邮件服务器的运作方式吗?请提供一些反馈和解决此问题的最佳方法。
答案 0 :(得分:0)
只是我的意见,但我认为最好采取一个单独的邮件服务器。 就像nodemailer中的例子一样:
JOIN mae_cuentas ON (mae_cuentas._id = mae_movintos._id )
为安全起见:
您可以使用单独的文件存储用户名/密码。
使用可以使用基于令牌的身份验证。所以你不需要保存密码。这方面的一个例子是OAuth。而不是使用令牌进行身份验证的密码。这个令牌来自邮件服务提供商(如gmail)。 使用oauth和nodemailer的示例,您可以找到here。