node.js - 带有 Docker 的 Nodemailer

标签 node.js docker smtp

我正在尝试通过 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

最佳答案

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

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

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

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

关于node.js - 带有 Docker 的 Nodemailer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45370428/

相关文章:

MySQL Docker 容器未将数据保存到新镜像

java - 使用 Mule 发送格式化邮件

php - 如何在 php smtp 中发送带有阿拉伯语 html 内容的电子邮件

c# 通过 exchange 2K7 使用 smtp 发送邮件

Docker compose,使用相同镜像: first fails with "no such image",秒的两个服务正常运行

python - 使用 pip 在 docker 容器中安装 opencv 时遇到问题

node.js - 如何在azure函数nodejs中动态设置要存储在Blob存储中的blob名称?

node.js - Sinon错误尝试包装已经包装的函数

javascript - Node API 的 session 在 postman 中运行良好但在浏览器中运行不佳

javascript - Puppeteer:打开一个页面,获取数据,返回上一页,进入新页面获取数据