当前位置: 首页 > 知识库问答 >
问题:

如何在 NATIVE nodeJS 中设置 SMTP 服务器 -- 没有任何依赖关系

冉绯辞
2023-03-14

我已经看到了许多关于设置nodejs以使用预先存在的smtp服务器的博客和堆栈溢出问题,尤其是通过nodemailer等模块。我已经看到了一些:

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

使用smtp客户端发送电子邮件,无需提供密码

如何创建自定义smtp服务器以在Nodejs中发送通知电子邮件?

在 Node 中发送电子邮件.js?(不知道为什么关闭)

使用smtp客户端发送电子邮件,无需提供密码

带有Gmail和NodeJS的Nodemailer

Nodemailer在没有smtp传输的情况下发送电子邮件——这更接近我想要的

如何创建自定义smtp服务器以在Nodejs中发送通知电子邮件?——这个太接近了,还没有答案

通过 Node 发送电子邮件.js使用 nodemailer 不起作用

SmtpJs API不工作!是否有任何方法可以使用带有JavaScript或JQuery的SMTP服务器发送电子邮件

电子邮件 NodeJS 无法发送

对于nodejs中的smtp邮件服务器有什么建议吗?-这可能是唯一一个甚至试图回答它的,尽管从那里提到的服务(smtp-server)的文档中,我没有看到SMTP服务器从零开始的实际制作,即我没有看到显示如何使用nodeJS制作自己的myemail@mydomain.com的部分(假设NodeJS服务器是在某种类似谷歌竞争引擎的linux VM上配置的)。

所有这些答案和博客都只涉及通过其他电子邮件html" target="_blank">客户端发送电子邮件。

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

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

我想托管我自己的。

从我自己的电脑上。

不要质疑我的意图。

这是一个非常有效的编程问题:

我如何创建,从零开始(即,只使用nodeJS中的“net”内置库,根本没有外部依赖)创建一个SMTP邮件服务器(假设我在某个HTTPS虚拟机上注册了自己的域),它能够在myemail@mydomain.com接收邮件,并从myemail@mydomain.com发送电子邮件,根本没有任何第三方服务器。

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

共有1个答案

邢心水
2023-03-14

一些友好的建议 - 如果您只想在本地计算机上接收邮件,则可能希望使用现成的MTA,如postfix,exim4或sendmail。

我之所以这么说,是因为我真的花了我职业生涯中的很大一部分时间来实施MTA,我觉得我应该警告你,这是一个已解决的问题,可以让你完全控制你的邮件流量,并且有一些非常棘手的问题需要解决,以编写一个大规模适用于大量邮件的MTA。

也就是说,SMTP(注释拼写)是一个非常简单的协议,如果您对这些东西感兴趣,它是一个很好的“第一协议”来实现。在NodeJS中编写一个非常容易。

你可能感兴趣的第一个版本发布于1982年左右,名为RFC-821,也就是IETF STD-10。几年后,它被更新为RFC-2821和一系列相关规范,但基本的RFC-821支持将使您能够与当今互联网上99%的主机进行对话。(这个数字会下降,因为您需要ESMTP对TLS的支持——但这不会更难,也不会有太大的不同)。

您的守护程序将需要侦听端口 25,并且需要处理如下命令:

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 字节宽。

最后,写

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

 类似资料:
  • 问题内容: 我正在使用Airflow计划批处理作业。我有一个DAG(A)每晚运行,另一个DAG(B)每月运行一次。B取决于A已成功完成。但是B需要很长时间才能运行,因此我想将其保存在单独的DAG中,以实现更好的SLA报告。 如何使运行DAG B依赖于同一天DAG A的成功运行? 问题答案: 您可以使用名为ExternalTask​​Sensor的运算符来实现此行为。将安排DAG(B)中的任务(B1

  • 问题内容: 我想从用golang编写的服务器应用程序中发送批量邮件。我只是不想使用任何第三方smtp服务器来避免使用配额限制。 没有SMTP服务器如何发送电子邮件?标准库中的smtp软件包可以帮助我吗?我看到的所有使用smtp软件包的示例都需要第三方smtp服务器发送电子邮件。 问题答案: 不直接与SMTP服务器通信而发送电子邮件的方法只有一种:将此操作委派给其他程序。 选择哪种程序本身就是一个开

  • 我希望它会按照一、二、三、四的顺序执行。但它是在并行模式下运行的。 以上代码的输出:

  • 为什么使用idea创建父子工程选择maven创建的时候有父项,而使用Springboot创建父子工程的时候pom里面就没有父子依赖关系呢?必须要手动指定?

  • 我有这个项目结构。 我想使它这样做,当我运行的时,它将使用bower文件夹并注入所有必要的文件。然后,当我执行时,它将接受所有脚本并按原样注入它。 我将这两个任务放在一个并发任务流中: /usr/local/bin/node/usr/local/lib/node_modules/gulp/bin/gulp.js--color--gulpfile/users/dan/projects/angular

  • 我使用PHP-S127.0.0.1:4242命令在本地主机上为php文件启动development server。但我想,我不应该在生产中使用这个东西。目前我正在尝试在VPS上设置我的网站,我不知道如何在端口4242上永远使用ssh启动php服务器。我知道,这可能是很愚蠢的问题,这是我第一次与真正的主持工作 如有任何帮助,我将不胜感激:)