代码之家  ›  专栏  ›  技术社区  ›  ilinieja

Nodemailer连接到本地docker mailserver

  •  0
  • ilinieja  · 技术社区  · 6 年前

    我需要设置一个本地邮件服务器并从中发送电子邮件。我用 docker-mailserver Nodemailer . docker-mailserver 安装程序我遵循它的文档指南,只更改了 DOMAINNAME 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
    

    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 错误。

    为了在脚本和容器之间建立正确的连接,我缺少什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Kenovo    6 年前

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

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