javascript - 从 Chrome 扩展程序发送电子邮件

标签 javascript email google-chrome-extension

我不希望用户必须执行或确认任何操作,因为这会破坏总体思路。换句话说,mailto 是不可能的。

是否可以通过 JavaScript 从 Chrome 扩展程序在客户端发送电子邮件,而不会中断用户体验或添加任何 JavaScript 扩展程序?如果是,怎么办?

我觉得这是不可能的。

我了解到有一个可用的 chrome.sockets.tcp API。怎么用?

最佳答案

要发送电子邮件,程序需要通过 TCP 连接到 SMTP 服务器并根据 SMTP protocol 与其通信。 .

  1. 无法使用 JavaScript/HTML5 API 直接发送电子邮件。

浏览器不公开与 TCP 套接字直接通信的能力。

虽然原则上您可以启动到任何端口的连接,但浏览器将“进行对话”,而不会“说出” SMTP。它可以做 HTTP,它可以做 WebSockets,但不是你想要的协议(protocol)。

  1. 无法直接从 Chrome 扩展程序发送电子邮件。

虽然Chrome extension APIs尽管增强了 Web API 提供的功能,但它们仍然没有为您提供与服务器“对话”的机会。

  1. 直接从 Chrome 应用发送电子邮件是可能的,但并不容易。

Chrome Apps APIs与扩展不同,但更重要的是它们包括通过 chrome.sockets.tcp API 对 TCP 套接字的原始访问。 .

注意“原始访问”这个词。您将不得不使用 JavaScript 从头开始​​实现您自己的邮件客户端。 This可能是一个起点。

根据您想要实现的目标,Chrome 应用可能是一个可以接受的解决方案。或者,如果您同时需要扩展程序 API 和应用程序 API,则可以创建两者并在它们之间传递消息。

  1. Native Messaging host 一切皆有可能.

基本上是一个本地应用程序,您可以从本地主机应用程序执行任何操作。然后,Chrome 扩展程序/应用程序将能够使用必要的数据调用它。

但是,如果您决定发布扩展,这将限制您的部署选项;您将不得不担心可移植性,并且 native 主机无法上传到网上商店;你需要一个单独的安装程序。

并且您的消息传递主机仍将需要实现您自己的 SMTP 客户端,尽管您可以为它提供更广泛的现成库选择。

  1. 使用外部 API 一切皆有可能,但确保通信安全将是一个挑战。

如果有一个网站可以与您的扩展程序通信并且可以代表您发送电子邮件,您可以让您的扩展程序触发这样的 API。

但是,将特定于扩展的 secret 隐藏到扩展中以限制 API 的使用实际上是不可能的。

您可以让用户使用某些凭据登录到此类服务,然后将这些用户特定的凭据存储在已安装的实例中,例如一个 OAuth token 。这基本上将问题转移到您必须控制(或与之达成协议(protocol))的 Web 服务。

额外阅读,这里是Apps vs Extensions指导。

关于javascript - 从 Chrome 扩展程序发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25556950/

相关文章:

email - 在 elisp 中发送电子邮件的最简单、最便携的方式是什么?

html - 如何获取 Chrome 扩展程序中的根文件夹?

javascript - 在 browser_action Chrome 扩展中设置当前选项卡的 window.location.href

javascript - iOS Phonegap 网页链接嵌入在 iframe 打开系统浏览器中,而不是在 iframe 中

javascript - 为什么我的字符串没有通过正则表达式?

Java PHP 如何立即检查电子邮件地址是否存在?

c# - 在 asp.net 中发送邮件

javascript - x-editable - POST 成功后运行代码?

javascript - 带 Backbone 的无限滚动js

google-chrome - 通过 CLI 标志在隐身模式下启用 Chrome 扩展?