带有Docker的Nodemailer

我试图通过register365从一个运行快递的docker集装箱发送一些电子邮件。

这是使用的代码

export class Emailer { transporter: nodemailer.Transporter; constructor() { this.transporter = nodemailer.createTransport(smtpTransport({ host: 'smtp.reg365.net', auth: { user: 'myuser', pass: mypassword' } })); } public async sendEmail(to,body) { try { return await this.transporter.sendMail({to,from: '"TEST" <user@myuser.ie>',text: body, subject: ' WE NEED THE CONTENT AND DESIGN OF THIS EMAIL!!!!'}); } catch(error) { console.log('Email error'); console.dir(error); } } } 

这工作都很好,如果我用npm start运行express,但是如果我用docker运行,它会失败,出现这个错误Error: Connection closed

它只使用smtp.reg.356.net失败,如果我使用Gmail,它将完美工作

这是我正在使用的docker文件

 FROM node:8 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app RUN npm install -g nodemon COPY package.json /usr/src/app/ RUN npm install COPY ./dist /usr/src/app/dist EXPOSE 3005 EXPOSE 25 CMD [ "npm", "start" ] 

非常感谢。

编辑:根据要求,运行telnet smtp.reg365.net 25返回此telnet: could not resolve smtp.reg.356.net/25: Name or service not known

在主机上输出cat /etc/resolv.conf

 domain Hitronhub.home nameserver 89.101.160.5 nameserver 89.101.160.4 

在docker集装箱上

 search hitronhub.home nameserver 127.0.0.11 options ndots:0 

创build一个文件/etc/docker/daemon.json

 { "dns": ["89.101.160.5", "89.101.160.4"] } 

重新启动docker服务,然后再试一次,看看这是否适合你。

您可能在办公室networking上有自己的DNS服务器,您应该使用。 所以你需要告诉Docker守护进程它的容器应该使用哪个DNS服务器。 这就是造成这个问题的原因。 daemon.json文件可用于更改守护程序configuration。