【发布时间】:2013-10-31 15:50:15
【问题描述】:
通常,当您发送电子邮件(使用 Thunderbird 或 Outlook)时,您不会直接发送。
示例:我有一个 gmail 地址,我想向 myopera 地址发送一封电子邮件。该过程将是:
用户->gmail 服务器(gmail-smtp-in.l.google.com)->myopera 服务器(in1.smtp.messagingengine.com)->最终用户将使用 pop/imap 下载它的电子邮件。
其中一个不便之处是大小:假设您有 50Mb 的附件:myopera 的限制是 60MB;但是gmail的限制是25MB,所以邮件会被拒绝,如果直接发到myopera会被接受。
但我在telnet 看到,可以直接使用 SMTP 命令发送邮件。
我想编写一个仅限客户端的 Web 应用程序,它将邮件转换为一组 SMTP 命令以进行发送。我应该很基础,不支持加密
我不知道如何从客户端创建 TCP 连接,所以,我的问题是:库是否已经存在?如果没有,我应该使用什么?我读过 WebSockets 的存在,但 Ajax 会更通用。
此外,我看到的大多数 WebSocket 的实际实现在我最新版本的网络浏览器中都不起作用,尽管它们“支持它”。还有来自 W3c 的原始 Socket API(我不知道实际支持它的 Web 浏览器)。
所以,我不想避免声明不可能在原始 TCP/ 附近创建UDP 会话。既然有可能,我无法想象没有人创建一种用于处理协议的库
【问题讨论】:
-
这听起来像是一条非常糟糕的路线,您正在重新发明轮子,您的解决方案将是特定于平台/浏览器的,并且可能需要提升权限。
-
@NickolaiNielsen 不,Web 标准不是特定于平台的。最新的浏览器中还存在一个安全漏洞,这使得不需要提升权限:在 Windows 上,只需要浏览器存在于
add/remove program。否则,有一个弹出窗口询问网络权限,可以拒绝并让浏览器运行。另见example:我想要一种更通用的方式,它可以在没有 node.js 的情况下工作。我'我认为某些东西已经存在,我不必从头开始。 -
node.js 是在浏览器之外运行的可执行文件,因此它可以访问原始 TCP 套接字。除非您使用漏洞利用或以某种方式破坏沙箱,否则它不会/不应该在浏览器中进行访问。
-
@NickolaiNielsen 我已经看到网络浏览器可以打开 TCP 端口,甚至可以在没有任何特权的情况下侦听传入连接(唯一的条件是它们本地安装在 windows/OSX 上)。一个例子是 Opera unite。 jSocket socketjs 是执行此操作但使用第三方插件的实现。我认识到,这与使用 Web 语言实现任意协议相同。它们是 navigator.registerProtocolHandler(),但我看不到任何在脚本中使用生成的输出的方法。 (抱歉,我认为现代浏览器让打开 telnet 会话变得容易)
-
我找到了this
标签: smtp telnet client-side-scripting web-client