代码之家  ›  专栏  ›  技术社区  ›  B''H Bi'ezras -- Boruch Hashem

如何在本机nodeJS中设置SMPT服务器-无任何依赖关系

  •  0
  • B''H Bi'ezras -- Boruch Hashem  · 技术社区  · 6 年前

    https://www.zeolearn.com/magazine/sending-and-receiving-emails-using-nodejs

    Use smtp client to send email without providing password

    How can I create a custom smtp server to send out notification emails in Nodejs?

    Sending emails in Node.js? (不知道为什么关门)

    Use smtp client to send email without providing password

    Nodemailer with Gmail and NodeJS

    Nodemailer send email without smtp transport 一点点 更接近我想要的

    How can I create a custom smtp server to send out notification emails in Nodejs? -- 这个离得太近了

    Sending email via Node.js using nodemailer is not working

    SmtpJs API not working! is there any way to send emails using SMTP server with JavaScript or JQuery

    Email NodeJS cannot send

    Any suggestion for smtp mail server in nodejs? --这个可能是唯一一个试图回答这个问题的人,尽管 docs 对于上面提到的服务(smtp服务器),我看不到smtp服务器从头开始的实际构造在哪里,也就是说,我看不到演示如何使用nodeJS创建自己的myemail@mydomain.com的部分(假设nodeJS服务器配置在类似google compete engine的linux VM上)。

    所有这些答案和博客都只针对发送电子邮件 通过 另一个电子邮件客户。

    我对其他任何电子邮件服务器都不感兴趣。

    我不相信gmail——或者其他任何第三方电子邮件提供商。

    我想主持我自己的节目。

    别怀疑我的意图。

    我如何创造,从绝对零开始(即., 只有 完全没有外部依赖项 完全

    我怎么能至少 做这个?任何可能涉及SMTP套接字协议的参考或教程都将是一个很好的开始。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Wes    6 年前

    我之所以这么说,是因为我的职业生涯中花了大量时间来实现MTA,我觉得我应该警告您,这是一个解决了的问题,可以让您完全控制邮件流量,而且要编写一个能够大规模处理大量邮件的MTA,还需要解决一些非常棘手的问题。

    你会感兴趣的第一版是在1982年左右发布的,名为RFC-821,又名IETF STD-10。后来经过多年的更新,它被更新为RFC-2821和一系列相关规范,但基本的RFC-821支持将为您提供您今天需要与99%的互联网主机交谈的内容。(这个数字会下降,因为您需要对TLS的ESMTP支持—但这并不难,也没有多大区别)。

    YOU:  220 my.computer.com SMTP Service Ready
    THEM: EHLO blah blah
    YOU:  500 Syntax Error. Try again using SMTP.
    THEM: HELO blah blah
    YOU:  250 G'day mate
    THEM: MAIL FROM: <billg@microsoft.com>
    YOU:  250 Sender Okay
    THEM: RCPT TO: <steve@apple.com>
    YOU:  250 OK
    THEM: DATA
    YOU:  354 Enter mail, end with "." on a line by itself...
    THEM: <BUNCH OF STUFF>
          .
    YOU:  250 Mail accepted
    THEM: QUIT
    YOU:  221 Goodbye
    

    显然这里还有更多的错误处理等——请阅读规范——但这是它的要点。这些数字是响应代码,具有特定的含义。行之间用\r\n分隔,宽度应小于1024字节。

    <“一串资料”是一封电子邮件,不会有一行只是其中的一个点。如果电子邮件有这样一个点,另一端将发送一个额外的点。这在规格中。

    最后,在$MAIL文件(可能是/var/MAIL/username或/var/spool/MAIL/username)中写入一堆东西,并将MUA指向它。松树,高山,榆树,或羊肉将是一个很好的MUA整理这些东西。

    <XXXX>需要以From(无冒号)开头,以\n结尾。这是Berkeley mbox文件格式。它应该反映SMTP事务中的邮件发件人标头。

    这种文件格式非常常见,大多数POP3和IMAP4服务器都支持这种格式。你也可以用Mozilla Thunderbird阅读。我知道当时Netscape Mail支持它。