由于EAI_AGAIN,电子邮件不在Docker容器内使用Nodemailer发送

我已经在Docker容器中设置了Nodemailer,但是我一直无法获得发送的邮件。 我在Docker之外运行相同的代码来testing它是否工作,并发送电子邮件。 所以它必须与我的docker容器设置有关。 我用来开发的docker-compose和docker-file不是花哨的,只是必需品,而我使用docker-toolbox,因为我没有Windows 10专业版。

我发现类似的问题,例如Nodemailer在一年多的Docker容器上部署并且不包含示例代码或答案之后不发送邮件 。 另外,发现https://stackoverflow.com/a/25270794/1148107 ,并尝试更改端口为465 TLS打开和closures,但仍不发送邮件。

错误

一个EAI_AGAIN错误被抛出,我抬头,是一个DNS查找超时问题,所以可能是一个networking连接错误或代理相关的错误,但我不是docker(或devops)大师,所以我有问题搞清楚解决它。 任何人都可以解释如何让Nodemailer在Docker容器中工作吗?

 Error: getaddrinfo EAI_AGAIN smtp.mailtrap.io:2525 at Object._errnoException (util.js:1021:11) at errnoException (dns.js:58:15) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:95:26) code: 'ECONNECTION', errno: 'EAI_AGAIN', syscall: 'getaddrinfo', hostname: 'smtp.mailtrap.io', host: 'smtp.mailtrap.io', port: 2525, command: 'CONN' 

Docker撰写

 services: server: container_name: server build: context: . dockerfile: .docker/node.${APP_ENV}.dockerfile ports: - "3000:3000" volumes: - ${NODE_SRC_PATH}:${NODE_CONTAINER_PATH} working_dir: ${NODE_WORKING_DIR} env_file: - ./.docker/env/node.${APP_ENV}.env depends_on: - db networks: - app-network // ... for brevity removed mysql, adminer, and network services 

Docker文件

 # Pull in image FROM node:latest # Expose the default Express port EXPOSE 3000 # Main entry point ENTRYPOINT ["npm", "run", "start"]