我已经在docker容器中设置了Nodemailer,但是我无法获取要发送的电子邮件。我在docker外部运行了相同的代码,以测试它是否有效并发送电子邮件。因此,这必须与我的Docker容器设置有关。我用于开发的docker-compose和docker-file并不是花哨的东西,仅仅是要点,而我使用的是docker-toolbox,因为我没有Windows 10专业版。
我发现了类似的问题,例如Nodemailer not sending mails after deploying it on docker container,已有一年多了,没有示例代码或答案。此外,找到了https://stackoverflow.com/a/25270794/1148107,并尝试在TLS启用和禁用的情况下将端口更改为465
,但是仍然不发送邮件。
错误
引发了EAI_AGAIN
错误,我进行了查询,这是DNS查找超时问题,因此可能是网络连接错误或与代理相关的错误,但是我不是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"]
最佳答案
请尝试重新启动Docker
$ systemctl restart docker
关于node.js - 由于EAI_AGAIN,未在Docker容器内使用Nodemailer发送电子邮件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46983945/