从自己的服务器发送电子邮件到互联网

Ale*_*lex 9 javascript smtp node.js nodemailer

我已经在主机上设置了电子邮件服务器。它基本上是一个侦听端口25的SMTP服务器。

const recvServer = new SMTPServer({
  requireTLS: true,
  authOptional: true,
  logger: true,      
  onConnect(session, callback) {
    return callback();
  },

  onMailFrom(address, session, callback) {
    console.log('from', address, session);
    return callback();
  },    

  onData(stream, session, callback) {
    console.log('new msg');
    let message = '';
    stream.on('data', chunk => {
      message += chunk;
    });

    stream.on('end', () => {

      callback(null, 'Message queued');
      simpleParser(message)
        .then(parsed => {
          console.log(parsed);
          // here I wish to forward the message to outside gmail addresses
        })
        .catch(err => {
          console.log(ee)
        });

    });
  }    
});

recvServer.listen(25);

recvServer.on('error', err => {
  console.log(err.message);
});
Run Code Online (Sandbox Code Playgroud)

它可以很好地接收来自外部的电子邮件,例如gmail等。

但我希望也可以将电子邮件发送到外部,或将收到的电子邮件转发到一些gmail地址。

我知道我可以使用Gmail SMTP服务器做到这一点,但随后我需要一个Gmail帐户和密码。

我希望能够使用自己的服务器发送电子邮件,就像yahoo使用自己的服务器(而不是gmail帐户)将邮件发送到gmail一样:)

Ram*_*rar 6

您需要一个 MTA(邮件传输代理)才能发送电子邮件。

所以流行的选项是:Postfix,这里是如何在 ubuntu 上设置 postfix 的指南:https : //help.ubuntu.com/community/Postfix

或者你可以启动一个 docker 容器,如:https : //hub.docker.com/r/bytemark/smtp/

然后您可以使用nodemailer通过 postfix 或 docker 实例发送电子邮件。

如果你想要一个完整的 docker 镜像,包含所有电池:https : //github.com/tomav/docker-mailserver