【问题标题】:Nodemailer connect to local docker-mailserverNodemailer 连接到本地 docker-mailserver
【发布时间】:2018-11-06 23:26:47
【问题描述】:

我需要设置一个本地邮件服务器并从它发送电子邮件。我使用docker-mailserver 并尝试从使用Nodemailer 的简单NodeJS 脚本连接到它。 对于docker-mailserver 设置,我遵循其文档中的指南,仅将DOMAINNAME env var 更改为我的服务器的域名。生成的容器 docker port 是:

993/tcp -> 0.0.0.0:993
143/tcp -> 0.0.0.0:143
25/tcp -> 0.0.0.0:25
587/tcp -> 0.0.0.0:587

在运行邮件服务器 docker 容器的同一台机器上,我尝试运行邮件发送脚本,代码如下:

const nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
    host: '0.0.0.0',
    port: 587,
    secure: false, // true for 465, false for other ports
    auth: {
        user: 'user@domain.com',
        pass: 'password'
    },
    tls: { rejectUnauthorized: false },
    debug: true,
});

let mailOptions = {
    from: '"????" <user@domain.com>',
    to: 'some_account@gmail.com',
    subject: 'Hello ✔',
    text: 'Hello world?',
    html: '<b>Hello world?</b>'
};

transporter.verify((error) => {
    if (error) {
        return console.error(error);
    }

    transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            return console.error(error);
        }
        console.log('Message sent: %s', info.messageId);
    });
});

但我只收到Error: Connection closed 错误。

我在这里缺少什么来设置脚本和容器之间的正确连接?

【问题讨论】:

    标签: mail-server docker node.js docker-compose


    【解决方案1】:

    默认情况下,容器在 docker 中是隔离的。 您可以通过在创建容器时添加链接参数来允许 docker 中的容器之间的连接 用法:

    Docker run -d --name node_mailer --link EMAIL_SERVER_CONTAINER_NAME nodemailer_image
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 2022-06-15
      • 2018-11-09
      • 2017-10-03
      • 1970-01-01
      • 2022-11-30
      相关资源
      最近更新 更多