【问题标题】:Email not sent using Nodemailer within Docker container due to EAI_AGAIN由于 EAI_AGAIN,电子邮件未在 Docker 容器中使用 Nodemailer 发送
【发布时间】:2018-04-09 14:02:07
【问题描述】:

我已经在 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,并尝试将端口更改为465,开启和关闭TLS,但仍然无法发送邮件。

错误

抛出了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"]

【问题讨论】:

    标签: node.js docker docker-compose nodemailer


    【解决方案1】:

    请尝试重启 Docker

    $ systemctl restart docker
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多