【发布时间】:2018-01-04 08:13:11
【问题描述】:
我正在尝试从通过 register365 运行 express 的 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
【问题讨论】:
-
启动容器并进入 bash shell。执行命令
telnet smtp.reg.356.net 25并将输出发布到您的问题中 -
完成,这是输出 telnet:无法解析 smtp.reg.356.net/25:名称或服务未知。谢谢
-
在主机和 docker 容器内还有一个
cat /etc/resolv.conf。很可能这是您需要的 dns 设置。一旦我确认这是问题,我会写答案 -
完成,作为编辑在答案中。再次感谢您!