对 nodejs 中的 smtp 邮件服务器有啥建议吗?
Posted
技术标签:
【中文标题】对 nodejs 中的 smtp 邮件服务器有啥建议吗?【英文标题】:Any suggestion for smtp mail server in nodejs?对 nodejs 中的 smtp 邮件服务器有什么建议吗? 【发布时间】:2011-07-25 11:34:30 【问题描述】:我在 Google 上搜索了很多,但都充其量是 alpha 版本,所以看来我必须尝试一个代码版本。我不想从头开始编写代码,而是希望在现有实现的基础上进行构建,但这是一个很好的实现。
有什么建议吗?
【问题讨论】:
您打算只接收电子邮件,还是同时发送? 【参考方案1】:我个人使用node_mailer:
从 node.js 发送电子邮件到你的 smtp 服务器,就像蛋糕一样简单。
来自https://github.com/marak/node_mailer:
特点:
超级简单的api 电子邮件被异步发送出去 使用每个 SMTP 的连接池 服务器 超级简单的内置模板使用 Mustache.js 支持 SSL(NodeJS v0.3.x 或更高版本)【讨论】:
好吧,但我需要一个 smtp 服务器。原因:我需要对服务器收到的来自外界的消息进行过滤处理。 嗯,我明白了。我不知道在哪里可以找到稳定/发布的实现。谷歌上有很多 alpha/beta 版本,我同意你的看法。 OP 正在寻找服务器,而不是邮件程序。 项目弃用,支持 nodemailer【参考方案2】:RFC 2821 (http://tools.ietf.org/html/rfc2821) 并不太复杂,你应该可以用大约 300 行 js 充实一个服务器。
【讨论】:
顺便说一句,这个答案听起来像是“试一试,你可以做到”而不是“随便,这很容易”。 :) 我找到了Haraka。看起来不错,但它需要 Mail Delivery Agent 来发送邮件,而且我的托管服务已经提供了很好的反垃圾邮件保护、spf 等,所以我决定用 Python 为 sendmail 编写一个 milter。 我 100% 同意这个答案的观点。即使您决定使用库(我就是这样做的),编写自己的库也将帮助您了解正在发生的事情,并且是一项非常有价值的练习。没那么难。 300 行代码不是衡量标准。一个人可以写这 300 行数天甚至数周。【参考方案3】:原香:https://github.com/baudehlo/Haraka
在 node.js 中是一个功能齐全的邮件服务器 - 应该做你需要的一切。
【讨论】:
【参考方案4】:SMTP 服务器 - 我将Simple SMTP 与mailparser 结合使用。恕我直言,这些是 Internet 上用于在 Node.js 中构建 SMTP 服务器的最佳工具。
更新:简单 SMTP 已被弃用。请改用SMTP server(Simple SMTP 模块的继承者)。
【讨论】:
另外,我不喜欢 Haraka。 :) 有趣。你不喜欢Haraka的具体原因有哪些?太复杂了,还是类似的? @JasonSmith 是的,差不多。 Haraka 对我来说太重了,而且似乎有一个更大的学习曲线。 simplesmtp 和 mailparser 的简单性是这些工具卖给我的原因。我构建了一个安全 (TLS) 邮件服务器,它可以对来自数据库的用户进行身份验证、解析传入的消息、允许用户通过简单地将电子邮件发送到特定的电子邮件地址来将文件上传到系统等等——所有这些都在 400 行代码以下。如果您需要像垃圾邮件过滤这样的功能,Haraka 可能是您的最佳选择。 简单的 smtp 对我来说很有希望。只需挂钩服务器生成的事件并以您需要的方式处理传入的邮件。我一定会使用它。谢谢。 @tfmontague smtp-server 由同一作者编写,是 Simple SMTP 的继承者。【参考方案5】:这里的一些答案已经过时了,所以我想提供最新的。
我知道目前有三个 Node SMTP 服务器(库):
Haraka(已经提到过并且非常健壮/重) smtp-server(这是已弃用的 Simple SMTP 项目的继承者) smtp-protocol还有mailin,它是一个 SMTP 服务器,它接收消息并将它们发布到某个 URL 以供您处理。 Mailin 将 Python 用于一些可选功能。
【讨论】:
Haraka 是用来收发邮件的吗? @Green Haraka 是一名邮件传输代理(“MTA”)。是“发送”还是“接收”实际上取决于您在交易中的位置。查看Email_agent_(infrastructure),了解 MTA 的适用范围。以上是关于对 nodejs 中的 smtp 邮件服务器有啥建议吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用 .NET core 2.2 中的 MailKit SMTP 客户端通过 Gmail SMTP 发送邮件对我不起作用