我不希望用户必须执行或确认任何操作,因为这会破坏总体思路。换句话说,mailto 是不可能的。
是否可以通过 JavaScript 从 Chrome 扩展程序在客户端发送电子邮件,而不会中断用户体验或添加任何 JavaScript 扩展程序?如果是,怎么办?
我觉得这是不可能的。
我了解到有一个可用的 chrome.sockets.tcp API。怎么用?
最佳答案
要发送电子邮件,程序需要通过 TCP 连接到 SMTP 服务器并根据 SMTP protocol 与其通信。 .
- 无法使用 JavaScript/HTML5 API 直接发送电子邮件。
浏览器不公开与 TCP 套接字直接通信的能力。
虽然原则上您可以启动到任何端口的连接,但浏览器将“进行对话”,而不会“说出” SMTP。它可以做 HTTP,它可以做 WebSockets,但不是你想要的协议(protocol)。
- 无法直接从 Chrome 扩展程序发送电子邮件。
虽然Chrome extension APIs尽管增强了 Web API 提供的功能,但它们仍然没有为您提供与服务器“对话”的机会。
- 直接从 Chrome 应用发送电子邮件是可能的,但并不容易。
Chrome Apps APIs与扩展不同,但更重要的是它们包括通过 chrome.sockets.tcp
API 对 TCP 套接字的原始访问。 .
注意“原始访问”这个词。您将不得不使用 JavaScript 从头开始实现您自己的邮件客户端。 This可能是一个起点。
根据您想要实现的目标,Chrome 应用可能是一个可以接受的解决方案。或者,如果您同时需要扩展程序 API 和应用程序 API,则可以创建两者并在它们之间传递消息。
- Native Messaging host 一切皆有可能.
基本上是一个本地应用程序,您可以从本地主机应用程序执行任何操作。然后,Chrome 扩展程序/应用程序将能够使用必要的数据调用它。
但是,如果您决定发布扩展,这将限制您的部署选项;您将不得不担心可移植性,并且 native 主机无法上传到网上商店;你需要一个单独的安装程序。
并且您的消息传递主机仍将需要实现您自己的 SMTP 客户端,尽管您可以为它提供更广泛的现成库选择。
- 使用外部 API 一切皆有可能,但确保通信安全将是一个挑战。
如果有一个网站可以与您的扩展程序通信并且可以代表您发送电子邮件,您可以让您的扩展程序触发这样的 API。
但是,将特定于扩展的 secret 隐藏到扩展中以限制 API 的使用实际上是不可能的。
您可以让用户使用某些凭据登录到此类服务,然后将这些用户特定的凭据存储在已安装的实例中,例如一个 OAuth token 。这基本上将问题转移到您必须控制(或与之达成协议(protocol))的 Web 服务。
额外阅读,这里是Apps vs Extensions指导。
关于javascript - 从 Chrome 扩展程序发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25556950/