【发布时间】:2018-02-16 19:07:17
【问题描述】:
我一直在寻找我的问题的答案。我认为这个问题(Send email to localhost smtp server in Node.js)完全一样,但答案对我没有帮助。
所以我有两个在 Centos7 上运行的虚拟机。我希望我的 VM 1 向我的 VM 2 发送一封电子邮件。这是我所做的:
VM 1 : Postfix 已安装并配置:relayhost = [ip of vm 2]:25
VM 2 : 端口 25 已打开。有在 25 端口监听的代码:
'use strict'
const fs = require('fs-extra')
const SMTPServer = require('smtp-server').SMTPServer
const simpleParser = require('mailparser').simpleParser
const date = require('date-and-time')
const builder = require('xmlbuilder') //9.0.4
const say = msg => {
console.log(msg)
}
const server = new SMTPServer({
logger: true,
//secure: true,
//authOptional: true,
//disabledCommands: ['AUTH'],
disabledCommands: ['AUTH', 'STARTTLS'],
// By default only PLAIN and LOGIN are enabled
authMethods: ['PLAIN', 'LOGIN', 'CRAM-MD5'],
onConnect: function(session, callback){
say('hello')
callback()
},
onData: function(stream, session, callback) {
say('received');
callback()
},
})
server.on('error', err => {
say('Error %s', err.message)
})
server.listen(25)
来自 VM 2: 当我使用 sendmail 向 locahost 发送邮件时:
sendmail ldecaudin@localhost < email.txt
,我可以看到“hello”和“received”
来自 VM 1: 当我使用 sendmail(通过 postfix 自动中继到我的 VM2)发送邮件时:
sendmail ldecaudin@[192.168.56.101] < email.txt
我只能看到"hello",所以连接正在运行,但是我无法传入"onData"函数来获取我的流需要。
同样来自我的 VM1,我有一个使用 nodemailer 发送邮件的节点代码,此代码有效。当我使用这段代码时,我得到了相同的结果(“hello”但不是“received”),但是有 2 个连接而不是 1 个。
所以我完全迷失了,我尝试添加“onAuth”功能,尝试“新SMTPServer”的许多选项。
我想知道这是否是端口的问题(但端口 25 是开放的!),或者我可能忘记在 Postfix 上放一些东西。我不知道。
你能帮帮我吗?
非常感谢您!
【问题讨论】:
-
您找到解决此问题的方法了吗?我会很高兴听到它,因为我正在解决同样的问题:)
-
不,我从来没有找到,对不起:/
标签: javascript node.js npm smtp postfix