【问题标题】:Nodemailer with Docker带有 Docker 的 Nodemailer
【发布时间】: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 设置。一旦我确认这是问题,我会写答案
  • 完成,作为编辑在答案中。再次感谢您!

标签: node.js docker smtp


【解决方案1】:

创建文件/etc/docker/daemon.json

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

重新启动 docker 服务并重试,看看这是否适合您。

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

【讨论】:

  • 解决了这个问题,谢谢!你介意向我解释一下是什么问题吗?
  • 更新了答案,看看这个解释有没有帮助?
猜你喜欢
  • 2021-08-30
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 2013-11-21
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
相关资源
最近更新 更多