带有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。