我已经在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/

10-16 19:40
查看更多